Baru-baru ini saya perlu menghapus sejumlah besar file (lebih dari 1 juta) dan saya membacanya dengan melakukan:
rsync -av --delete `mktemp -d`/ ~/source && rmdir ~/source
Adalah salah satu cara paling optimal untuk melakukan itu, dan saya dapat memastikan bahwa itu lebih cepat daripada rm -rf.
Saya bukan ahli dalam masalah ini, tetapi dari pemahaman saya alasan kinerja rsync ada hubungannya dengan cara daftar file (LIFO bukan FIFO saya kira). Sekarang, masalahnya adalah, saya juga perlu memindahkan sejumlah besar file dengan cara yang efisien. Setelah mencari sedikit, saya menemukan ini:
rsync -av --ignore-existing --remove-source-files ~/source ~/destination
Sementara ini menghapus semua pindah file di ~/source, direktori tetap ada. Karena saya memiliki struktur direktori seperti round-robin, maka jumlahnya files/directoriessangat dekat dengan 1, jadi saya terpaksa menjalankan perintah pertama lagi untuk menyingkirkan direktori sepenuhnya:
rsync -av --ignore-existing --remove-source-files ~/source ~/destination && \
rsync -av --delete `mktemp -d`/ ~/source && rmdir ~/source
Lurus mv akan selesai secara instan, tetapi ~/destinationdirektori saya memiliki file yang harus disimpan, jadi mvbukan pilihan. Saya menemukan opsi --prune-empty-dirsdan --forcersync, tetapi tampaknya tidak berfungsi seperti yang saya harapkan:
--force force deletion of directories even if not empty
--prune-empty-dirs prune empty directory chains from the file-list
--remove-source-files sender removes synchronized files (non-dirs)
Apakah ada cara untuk meniru gerakan dengan rsync sekaligus?