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/directories
sangat 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 ~/destination
direktori saya memiliki file yang harus disimpan, jadi mv
bukan pilihan. Saya menemukan opsi --prune-empty-dirs
dan --force
rsync, 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?