1. Masalah dengan karakter khusus dalam nama file
Apakah ada karakter khusus dalam nama file? Bergantung pada sistem file tempat Anda menulis file-file ini, mereka mungkin tidak memungkinkan Anda untuk mengawali file dengan titik ( .
) misalnya.
2. Masalah dengan waktu modifikasi rsync dan webdav2
Saya menemukan posting blog ini di mana masalah dijelaskan dengan rsync
memiliki masalah menulis / melacak kali modifikasi file di webdav2 mount direktori box.com.
Masalahnya muncul seperti ini di sistem file yang dipasang:
david@sydney:~/Pictures$ ls -l /mnt/box/bwca/08/09/IMG_3084.CR2
-rw-r--r-- 1 david david 12564061 Aug 14 16:08 /mnt/box/bwca/08/09/IMG_3084.CR2
david@sydney:~/Pictures$ ls -l 2012/08/09/IMG_3084.CR2
-rw-rw-r-- 1 david david 12564061 Aug 9 13:00 2012/08/09/IMG_3084.CR2
Artikel yang sama menunjukkan solusi:
$ rsync -avhP --size-only --bwlimit=64 2012/08 /mnt/box/bwca/
Ini adalah cara yang OK untuk digunakan rsync
, tetapi ini hanya membandingkan file berdasarkan ukurannya sekarang, bukan checksum mereka.
3. Masalah dengan davfs2 (WebDAV)
Saya menemukan utas ini berjudul: rsync via davfs2? di forum WebDAV (davfs) di atas pada sourceforge. Seseorang bertanya tentang situasi serupa di mana mereka ingin menggunakan WebDAV untuk memasang penyedia penyimpanan online dan melakukan rsync ke penyimpanan yang dipasang melalui WebDAV. Inilah yang dikatakan oleh salah satu pengembang (Werner Baumann) dari WebDAV tentang topik ini .
kutipan tanggapan Werner
davfs2 hanya akan mengunggah file lengkap. Itu tidak dapat melakukan hal-hal tambahan yang biasanya dilakukan rsync, dan itu membuat rsync sangat efisien.
davfs2 menggunakan cache lokal pada disk. Ini akan membuatnya lebih responsif dan aplikasi Anda akan mendapat keuntungan dari ini juga. Tetapi perlu ruang disk lokal untuk ini. Anda harus mengizinkan ukuran cache yang besar, sehingga rsync dapat melakukan sebagian besar pekerjaannya dengan cache lokal, dan davfs2 akan mengunggah sebagian besar file di latar belakang, ketika rsync telah selesai.
Werner selanjutnya menyarankan yang berikut
Ini bisa menjadi kerugian dalam kasus ini. Ketika rsync membaca file pada host jarak jauh, itu harus ditransfer oleh davfs2 ke cache lokal terlebih dahulu (jika belum ada di sana). Ini bisa membuat prosesnya benar-benar dan tidak perlu lambat. Karena rsync hanya berfungsi sebagai program salin canggih dalam kasus Anda, mungkin lebih baik menggunakan cp. cp memiliki opsi (-u) untuk menyalin hanya file yang lebih baru daripada yang ada di sistem file davfs2 (= smartdrive) dan tidak perlu membaca file, tetapi hanya membaca data meta file seperti mtime.
Perintah seperti "direktori cp -pru / ke / backup dav /" dapat melakukan pekerjaan itu. Shold tidak mengunduh file (seperti yang mungkin dilakukan rsync, tapi saya tidak yakin) (silakan lihat manual cp dan rsync).
Pilihan?
Jadi seperti yang disarankan @Anthon, Anda dapat menggunakan cp -u
metode ini untuk menyalin file. Menyadari bahwa metode ini semata-mata melihat ukuran file sebagai faktor perbandingan, sehingga tidak sepenuhnya dapat diandalkan.
Anda tidak boleh menggunakan apa pun yang hanya terlihat pada waktu modifikasi ketika membandingkan file cp -pru
,. Werner menjelaskan mengapa di utas ini :
kutipan tentang masalah dengan waktu mod
Ketika Anda melepas sistem file davfs2 dan memasangnya lagi di lain waktu, waktu file mungkin telah berubah sesuai dengan informasi waktu dari server. Alat-alat seperti cp -pu dan rsync tidak dapat mengandalkan waktu ini untuk menentukan file apa yang telah berubah.
Jadi mengingat berbagai masalah seputar waktu modifikasi pendekatan menggunakan checksum murni tampaknya lebih cocok:
$ rsync -avvz --omit-dir-times --checksum --human-readable --progress <local dir> <remote dir>
--max-size=250M --exclude '.*'
. Saya yakincp
dapat dibuat untuk melakukan ini ... mungkin dengan mem-pipkan output dari find ke cp? Tapi saya belum tahu bagaimana melakukannya. Jika kami menemukan solusi, saya akan cobacp -ru
. Terima kasih