GNU/Linux >> Belajar Linux >  >> Linux

Apa cara tercepat untuk memindahkan sejuta gambar dari satu direktori ke direktori lain di Linux?

rsync akan menjadi pilihan yang buruk karena melakukan banyak pekerjaan latar belakang klien/server yang memperhitungkan sistem lokal maupun jarak jauh.

mv mungkin adalah pilihan terbaik. Jika memungkinkan, Anda harus mencoba mv directory_old directory_new bukan mv directory_old/* directory_new/ . Dengan cara ini, Anda memindahkan satu barang, bukan jutaan barang.


find src_image_dir/ -type f -name '*.jpg' -print0 | xargs -0r mv -t dst_image_dir/ 
  • Ini tidak akan melimpahkan ekspansi argumen.
  • Anda dapat menentukan ekstensi file, jika Anda mau. (-nama ...)
  • find -print0 dengan xargs -0 memungkinkan Anda menggunakan spasi pada nama.
  • xargs -r tidak akan menjalankan mv kecuali ada yang mau dipindahkan. (mv akan mengeluh jika tidak ada file sumber yang diberikan).
  • Sintaks mv -t memungkinkan Anda untuk menentukan terlebih dahulu tujuan dan kemudian file sumber, yang dibutuhkan oleh xargs .
  • Memindahkan seluruh direktori tentu saja jauh lebih cepat, karena berlangsung dalam waktu yang konstan terlepas dari jumlah file yang ada di dalamnya, tetapi:
    • direktori sumber akan menghilang untuk waktu yang singkat dan mungkin menimbulkan masalah bagi Anda;
    • jika proses menggunakan direktori saat ini sebagai direktori keluaran (berbeda dengan selalu merujuk ke jalur lengkap dari lokasi yang tidak bergerak), Anda harus meluncurkannya kembali. (seperti yang Anda lakukan dengan rotasi log ).

Ngomong-ngomong, saya akan bertanya pada diri sendiri apakah saya benar-benar harus memindahkan file dalam jumlah besar sekaligus. Pemrosesan batch dinilai terlalu tinggi. Saya mencoba untuk tidak menumpuk pekerjaan dalam jumlah besar jika saya dapat memproses sesuatu pada saat dihasilkan.


Jika kedua direktori berada pada sistem file yang sama, gunakan mv pada DIRECTORY dan bukan isi direktori.

Jika berada di dua sistem file yang berbeda, gunakan rsync:

rsync -av /source/directory/ /destination

Perhatikan / di belakangnya pada sumbernya. Ini berarti akan menyalin ISI direktori dan bukan direktori itu sendiri. Jika Anda meninggalkan / mati, itu masih akan menyalin file tetapi mereka akan duduk di direktori bernama /destination/directory . Dengan /, file hanya akan berada di /destination

rsync akan mempertahankan kepemilikan file jika Anda menjalankannya sebagai root atau jika file tersebut milik Anda. Itu juga akan mempertahankan mtime dari setiap file individual.


Linux
  1. Cara Menemukan dan Menyalin Jenis File Tertentu Dari Satu Direktori Ke Direktori Lain Di Linux

  2. Bagaimana Memindahkan Semua File (termasuk Tersembunyi) Dari Satu Direktori Ke Yang Lain?

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

  1. Cara Tercepat Untuk Mengekstrak Iso?

  2. Bandingkan dua gambar dengan cara python/linux

  3. Bagaimana cara memindahkan (dan menimpa) semua file dari satu direktori ke direktori lain?

  1. Apa cara yang benar untuk menginstal jdk di linux

  2. Apakah ada cara sederhana untuk memindahkan/menyalin volume logis dari satu grup volume ke grup volume lainnya? (LVM2)

  3. Apa cara tercepat untuk menggabungkan dua atau lebih file di Linux?