rsync: mentransfer file dalam satu arah saja

21

Apakah mungkin menggunakan rsync untuk menyalin file hanya dalam satu arah?

Sebagai contoh, misalkan kita memiliki:

left/a.txt

right/a.txt

di mana file awalnya identik.

Jika ada yang memodifikasi right/a.txt, maka:

rsync -avv left/ right/

akan menyalin right/a.txtke left/a.txt.

Apakah mungkin untuk membatasi rsync hanya menyalin dari left/ke right/(yaitu mencegahnya menyalin dari right/ke left/)?

artella
sumber

Jawaban:

33

Anda salah mengerti rsync. Perintah ini:

rsync -avv left/ right/ 

tidak akan menyinkronkan apa pun di kanan ke kiri. Ini akan, seperti kata @atbg, hanya disinkronkan dari kiri ke kanan. Rsync bukan syncer dua arah. Ini menyinkronkan dest dengan sumbernya.

Halaman manual untuk referensi: http://linux.die.net/man/1/rsync

jdw
sumber
Menariknya ketika mengoperasikan setidaknya rsync versi Mac untuk menyinkronkan direktori jarak jauh melalui ssh itu adalah dua arah - misalnyarsync -avzz -e "ssh -p 2222" /source/ /target/
geotheory
4

Seharusnya rsync [OPTION...] SRC... [DEST]begitu itu bekerja ke arah itu (kecuali Anda beralih dest dan src).

left/a.txtharus disalin ke right/a.txt:

$ echo 'left' > left/a.txt
$ echo 'right' > right/a.txt
$ cat left/a.txt && cat right/a.txt
left
right
$ rsync -avv left/ right/
sending incremental file list
delta-transmission disabled for local transfer or --whole-file
a.txt
total: matches=0  hash_hits=0  false_alarms=0 data=5

sent 95 bytes  received 34 bytes  258.00 bytes/sec
total size is 5  speedup is 0.04
$ cat left/a.txt && cat right/a.txt
left
left

Jika ada file tertentu yang tidak ingin Anda sertakan oleh rsync lihat --exclude=PATTERNdan --exclude-from=FILE.

agtb
sumber
2
Dan ingat, ketika ragu --dry-runopsi akan menampilkan daftar file yang akan ditransfer tetapi tidak benar-benar melakukan transfer. Saya menambahkan ini ke awal setiap rsynchanya sebagai tindakan pencegahan, bahkan jika saya yakin perintahnya sudah benar.
slillibri
1
Mengingat kebingungan tentang operasi rsync, mungkin perlu dicatat --updateopsi rsync , yang akan melewatkan (tidak menyinkronkan) file yang memiliki waktu lebih baru modifieddi sisi penerima.
Richard Michael