GNU/Linux >> Belajar Linux >  >> Linux

Salin Jenis File Tertentu Sambil Menjaga Struktur Direktori Di Linux

Beberapa waktu yang lalu, kami mempelajari cara menyalin jenis file tertentu dari satu direktori ke direktori lain di Linux. Hari ini kita akan melakukan hal yang sama tetapi mempertahankan struktur direktori juga. Tutorial singkat ini menjelaskan cara menyalin jenis file tertentu sambil mempertahankan struktur direktori di Linux. Di sini saya telah memberikan dua cara berbeda untuk melakukan ini. Pilih saja yang cocok untuk Anda.

Menyalin Jenis File Tertentu Sambil Menjaga Struktur Direktori Di Linux

Bayangkan skenario ini.

Saya memiliki direktori bernama "Linux" dengan berbagai jenis file yang disimpan di sub-direktori yang berbeda. Lihat struktur direktori berikut:

$ tree Linux/
Linux/
├── dir1
│   ├── English
│   │   └── Kina - Can We Kiss Forever.mp3
│   ├── Instrumental
│   │   └── Chill Study Beats.mp3
│   └── Tamil
│       ├── Kannan Vanthu.mp3
│       └── yarenna.mp3
├── dir2
│   ├── file.docx
│   └── Raja Raja Chozan Naan.mp3
├── dir3
│   ├── Bamboo Flute - Meditation - Healing - Sleep - Zen.mp3
│   └── pic.jpg
└── dir4
    ├── Aaruyirae.mp3
    └── video.mp4

7 directories, 10 files

Daftar isi direktori menggunakan perintah pohon

Seperti yang Anda lihat dalam struktur direktori di atas, Linux direktori memiliki empat sub-direktori yaitu dir1 , dir2 , dir3 dan dir4 . mp3 file tersebar di keempat sub-direktori. Sekarang, saya ingin menyalin semua mp3 file ke direktori lain bernama "ostechnix" dan juga saya ingin menyimpan struktur direktori yang sama di direktori target.

Pertama kita akan melihat bagaimana melakukannya menggunakan perintah "find".

Metode 1 - menggunakan perintah "find" dan "cp" atau "cpio"

Buka direktori sumber:

$ cd Linux/

Dan salin semua jenis file mp3 menggunakan perintah "find":

$ find . -name '*.mp3' -exec cp --parents \{\} ~/ostechnix \;

Mari kita uraikan perintah di atas dan lihat apa yang dilakukan setiap opsi.

  • temukan – perintah untuk menemukan file dan folder dalam sistem mirip Unix.
  • titik (.) - menyatakan bahwa kami menyalin konten dari direktori saat ini.
  • -iname ‘*.mp3’ – cari file yang cocok dengan ekstensi .mp3.
  • -exec cp – jalankan perintah ‘cp’ untuk menyalin file dari direktori sumber ke direktori tujuan.
  • --orang tua - buat direktori induk perantara jika diperlukan untuk mempertahankan struktur direktori induk.
  • \{\} – secara otomatis diganti dengan nama file dari file yang ditemukan dengan perintah 'find'. Dan kawat gigi diloloskan untuk melindunginya dari ekspansi oleh shell di beberapa versi perintah "temukan". Anda juga bisa menggunakan {} tanpa karakter escape.
  • ~/ostechnix – direktori target untuk menyimpan file yang cocok.
  • \; – menunjukkan bahwa perintah yang akan dijalankan sekarang sudah selesai, dan untuk menjalankan perintah itu lagi pada pertandingan berikutnya.

Perintah ini akan menemukan dan menyalin semua file jenis mp3 dari direktori ~/Linux ke direktori ~/ostechnix. Dan juga mempertahankan struktur direktori yang sama di direktori target.

Anda dapat memverifikasinya menggunakan perintah "pohon" di kedua lokasi seperti di bawah ini.

Daftar isi direktori menggunakan perintah pohon di Linux

Seperti yang Anda lihat pada output di atas, direktori tujuan hanya memiliki file mp3 dan struktur direktorinya sama dengan direktori sumber.

Jika Anda melakukan ini dari beberapa lokasi lain, tentukan path lengkap dari direktori sumber seperti di bawah ini.

$ find ~/Linux -name '*.mp3' -exec cp --parents \{\} ~/ostechnix \;

Perintah ini akan menemukan semua file di Linux/ lokasi dan salin ke ostechnix/~/Linux/ .

Salin Jenis File Tertentu Sambil Menjaga Struktur Direktori Di Linux

Jika --orang tua opsi tidak berfungsi, Anda dapat menggabungkan perintah find dengan cpio perintah untuk menyalin file menjaga struktur direktori.

$ find . -name '*.mp3' | cpio -pdm  ~/ostechnix

Di sini,

  • cpio - Perintah untuk menyalin file ke dan dari arsip.
  • -p - Baca daftar nama file dari input standar dan salin ke direktori yang ditentukan.
  • -d - Buat direktori jika diperlukan.
  • -m - Pertahankan waktu modifikasi file.

Untuk detail lebih lanjut, lihat halaman manual.

$ man find
$ man cp
$ man cpio

Bacaan yang disarankan:

  • Cara Mengatur Jenis File Serupa Secara Otomatis Di Folder Tertentu

Metode 2 - menggunakan Rsync

Rsinkronisasi adalah alat yang ampuh yang digunakan ke/dari sistem lokal dan jarak jauh. Untuk menyalin jenis file tertentu dari satu direktori ke direktori lain sambil mempertahankan struktur direktori induk, jalankan:

$ rsync -a -m --include '*/' --include '*.mp3' --exclude '*' ~/Linux/ ~/ostechnix

Atau,

$ rsync -a --prune-empty-dirs --include '*/' --include '*.mp3' --exclude '*' ~/Linux/ ~/ostechnix

Di sini,

  • rsinkronisasi - alat penyalinan file jarak jauh (dan lokal).
  • -a - mode arsip untuk menyimpan hampir semuanya (termasuk symlink, tanggal modifikasi, izin file, pemilik, dll.)
  • -m, --prune-empty-dirs - Pangkas direktori kosong dari pohon sumber. Jika Anda ingin memasukkan direktori kosong, hapus saja opsi ini dari perintah di atas.
  • --include="*/" --include="*.mp3" --exclude="*" - Untuk menyertakan hanya file tertentu, Anda harus terlebih dahulu menyertakan file spesifik tersebut, lalu mengecualikan semua file lainnya. Dalam kasus kami, kami telah menyertakan file *.mp3 dan mengecualikan yang lainnya.
  • ~/Linux - Direktori sumber.
  • ~/ostechnix - Direktori tujuan.

Contoh keluaran:

Salin Jenis File Tertentu Sambil Menjaga Struktur Direktori Menggunakan Rsync Di Linux

Untuk detail lebih lanjut, lihat halaman manual.

$ man rsync

Semoga membantu.


Linux
  1. Linux – Bagaimana Cara Memeriksa Informasi Struktur Direktori File Unix/linux?

  2. Cara Menyalin Direktori di Baris Perintah Linux [Tips Pemula]

  3. 6 mv Contoh Perintah untuk Memindahkan atau Mengganti Nama File dan Direktori Linux

  1. Cara Menghapus (Menghapus) File atau Direktori di Linux

  2. Perintah cp Linux

  3. perintah linux untuk mengosongkan semua file direktori

  1. Cara Menyalin File ke Banyak Direktori di Linux

  2. Perintah Ekor Linux

  3. Perintah Sentuh Linux