Saya biasanya melakukan rsync -n
sebelum melakukan yang sebenarnya rsync
. Masalahnya adalah, bagaimana saya bisa mengotomatiskan jalankan kedua untuk menggunakan kembali daftar yang dibuat dengan tepat --dry-run
?
Maksud saya, jika saya menjalankan rsync -n
maka saya mendapatkan simulasi dari apa yang rsync
akan dilakukan, ide saya adalah mengambil output itu, memprosesnya lalu entah bagaimana rsync
hanya membuat --include-from
output itu, jadi daftar lengkap harus dihitung hanya sekali.
Jika ini bahkan tidak masuk akal, tolong beri tahu saya.
Ngomong-ngomong, saya cenderung menggunakan rsync -hva --progress --stats --delete --exclude-from "$EXCLUDEFILE"
. Jika Anda juga memiliki saran tentang opsi apa yang akan Anda gunakan, tolong, beri tahu saya. Saya mencoba menduplikasi konten hard drive eksternal (yang hanya berisi gambar, video, dan dokumen) ke hard drive eksternal lain.
sumber
--dry-run
perintah ke file (misalnya,rsync --dry-run -avz SOURCE DEST > include.txt
), menghapus semua baris yang bukan file / jalur dari include.txt, dan berjalanrsync --include-from include.txt
.rsync --include-from include.txt --exclude=* SOURCE DEST
. Lihat stackoverflow.com/a/19296415/1765910 untuk detailnya.rsync
tetapi tidak tahu apa-apa dari skrip shell / bash ...Jawaban:
Sangat mungkin untuk menggunakan daftar file yang dihasilkan selama menjalankan kering sebagai file termasuk. Idealnya, bagaimanapun, garis tambahan di bagian atas dan bawah dari output dry-run harus dihapus.
Contoh output:
Untuk menghapus garis-garis ini, pipa
rsync
output ke dalamhead
dan ketail
. Kemudian, simpan output yang diproses ke file include:rsync --dry-run -avz source/ destination/ | head --lines=-3 | tail --lines=+3 > include.txt
Akhirnya, beri tahu
rsync
untuk menggunakan file include yang dihasilkan (menambahkan opsi tambahan seperti yang diinginkan):rsync --include-from=include.txt --exclude=* source/ dest/
sumber
tail
/head
cukup kuat untuk memastikan hanya memiliki daftar file?--delete
menyebabkan file dihapus dari direktori sumber untuk dihapus dari direktori tujuan juga, setidaknya di komputer saya mencobanya. Anda dapat meninggalkan keluartail
/head
bagian seluruhnya.rsync
menginterpretasikan setiap baris dalam file sertakan sebagai nama file dan hanya mengabaikan file yang tidak ada, sehingga tidak ada yang akan terjadi jika Anda menyimpan baris tambahan (kecuali jika Anda memiliki file bernama "mengirim daftar file tambahan", dll., dalam hal ini file-file ini juga akan disalin).