rsync tidak berfungsi antara NTFS / FAT dan EXT

13

Saya memiliki musik yang saya mainkan di mobil saya, dari stik FAT32 USB. Folder yang saya gunakan untuk menyimpan lagu disimpan di hard drive EXT4 saya. Saya menambah / menghapus / retag lagu secara teratur dan sesekali ingin rsyncperubahan ke USB stick. Tetapi karena alasan yang tidak diketahui (mungkin izin?), rsyncSalin semua file setiap kali alih-alih hanya yang diubah. Saya memanggil rsyncseperti:

rsync -vrlptgD source dest

Bagaimana saya bisa membuatnya berfungsi seperti yang saya inginkan (yaitu tahu kapan file belum diubah dan jangan menyalinnya)?

wim
sumber

Jawaban:

17

Jawaban Javier Rivera berhasil, tetapi butuh cukup lama bagi rsync untuk memeriksa dan membandingkan semua file checksum. Saya menemukan bahwa menggunakan opsi berikut bekerja lebih baik untuk saya:

rsync -rtv --modify-window=1 /source /dest

The --modify-window=1switch memungkinkan untuk varians dari ± 1s pada cap waktu. Dengan opsi ini diaktifkan, perbandingan timestamp akan lebih lunak dan memeriksa perbedaan waktu sangat kecil antara sistem file NTFS / FAT dan Unix.

Sumber (ger): http://www.kai-hildebrandt.de/tutorials/rsync.html

PS: Perlu diketahui bahwa DST akan menyebabkan transfer file penuh dua kali setahun. Lihat di sini untuk perincian lebih lanjut dan kemungkinan solusi.

Glutanimate
sumber
Ini bagus. Saya juga menemukan opsi --iconvmembantu ketika pergi dari sumber linux ke dest MacOS
wim
2
Untuk beberapa alasan saya perlu menggunakan modify-window=2karena =1masih menyalin semua file. Menyalin dari NTFS ke FAT32. Setelah itu tidak apa-apa.
Luc
Saya menambahkan --size-onlytanda untuk melewati file yang cocok dengan ukuran
alexandre1985
1
@ alexandre1985: Itu akan menghilangkan file yang mengubah konten mereka tetapi tidak ukurannya. Anda hanya boleh menggunakannya ketika Anda hanya ingin membuat cadangan file yang selalu berubah ukuran ketika mereka mengubah konten, misalnya karena data hanya ditambahkan kepada mereka tetapi tidak pernah ditimpa.
David Foerster
11

Stempel waktu di FAT32 terlalu berbeda dari yang unix untuk bergantung pada mereka untuk memeriksa perubahan file, Anda harus menggunakan juga saklar -c, itu akan memaksa rsync untuk membandingkan semua file untuk mendeteksi perubahan alih-alih mengandalkan cap waktu. Ini akan berhasil, tetapi lebih lambat.

Akhirnya, ada beberapa opsi dalam perintah Anda yang tidak dapat bekerja dengan sistem file FAT32.

  • -Aku akan menjaga tautan, FAT32 tidak memiliki konsep tautan
  • -p akan mencoba mempertahankan izin, lagi-lagi tidak ada izin pada FAT32
  • -t akan mencoba untuk melestarikan cap waktu modifikasi, hanya ada satu cap waktu pada FAT32
  • -g akan mencoba mempertahankan kepemilikan grup, sekali lagi tidak didukung oleh FAT32
  • -D akan mencoba untuk memelihara file dan perangkat khusus, Anda sekarang apa yang datang ke sini.

Seperti komentar htorque, opsi yang tidak valid tidak akan menyakiti Anda, mereka hanya akan melakukan apa-apa. Tetapi Anda harus menambahkan saklar -c.

Ini:

rsync -vrc source dest

harus berfungsi (setidaknya berfungsi di komputer saya).

Javier Rivera
sumber
3

Saya mengalami masalah serupa di bawah OSX, dan jawaban Glutanamate tidak membantu. Beberapa file berbeda satu jam; ini mungkin karena saya cenderung sering melintasi zona waktu. File lain tidak aktif dalam sehari atau bahkan sebulan. Saya tidak yakin mengapa ini terjadi. Pemeriksaan pada beberapa file dengan cap waktu yang sangat berbeda menunjukkan bahwa mereka memang identik.

Bagaimanapun, sepertinya --size-onlyopsi, yang memberitahu rsyncuntuk mengabaikan cap waktu, akan bekerja untuk tujuan saya. -c/ --checksum(seperti yang disebutkan oleh Javier) juga berfungsi, tetapi membutuhkan waktu sedikit lebih lama. Saya menghitung waktunya dan butuh sekitar satu menit untuk membandingkan checksum untuk GB atau lebih di subdirektori yang saya kerjakan. Tentu saja kecepatan terjadinya hal ini akan tergantung pada drive yang paling lambat dalam sistem; dalam kasus saya, itu kartu SD di ponsel saya. Namun, itu setelah saya melakukan manipulasi file (termasuk checksumming), sehingga banyak file yang mungkin telah disalin ke dalam cache RAM.

intuisi
sumber
1

Anda juga harus menghindari penggunaan opsi -a populer. Rekomendasi saya tentang FAT32 adalah

 rsync -vrc --delete --progress --no-p source  destination

--no-p: tidak ada izin

--delete: hapus file dan folder yang tidak cocok di tujuan (jika Anda benar-benar menginginkan ini)

--progress: tampilkan progres selama transfer. Ini bagus untuk file besar.

Ahmad Yoosofan
sumber
1
Dapatkan dukungan dari saya walaupun sebagai tambahan -vrc, saya juga melakukannya-vrcz
Antony
0

Terlalu banyak flag (-vrlptgD) yang Anda gunakan. Ingat, rsync adalah utilitas Linux dan tidak bekerja dengan Fat32 dan NTFS secara efektif.

Anda harus berburu trik agar dapat menggunakannya.

Mencoba:

rsync -rvh --size-only --progress --delete /path/to/ext4/ /path/to/fat32/

Info lebih lanjut di sini

Raman Kathpalia
sumber