Ini menempatkan folder A ke dalam folder B:
rsync -avu --delete "/home/user/A" "/home/user/B"
Jika Anda menginginkan isi folder A dan B agar sama, masukkan /home/user/A/
(dengan garis miring) sebagai sumbernya. Ini tidak mengambil folder A tetapi semua isinya dan memasukkannya ke folder B. Seperti ini:
rsync -avu --delete "/home/user/A/" "/home/user/B"
-a
Lakukan sinkronisasi dengan mempertahankan semua atribut sistem file-v
jalankan secara verbal-u
hanya salin file dengan waktu modifikasi yang lebih baru (atau perbedaan ukuran jika waktunya sama)--delete
hapus file di folder target yang tidak ada di sumber
Halaman manual:https://download.samba.org/pub/rsync/rsync.html
Anda bisa unison
alat yang dikembangkan oleh Benjamin Pierce di U Penn.
Anggaplah Anda memiliki dua direktori,
/home/user/Documents/dirA/
dan /home/user/Documents/dirB/
Untuk menyinkronkan keduanya, Anda dapat menggunakan:
~$unison -ui text /home/user/Documents/dirA/ /home/user/Documents/dirB/
Di keluaran, unison
akan menampilkan setiap direktori dan file yang berbeda di dua direktori yang Anda minta untuk disinkronkan. Ini akan merekomendasikan untuk menyinkronkan secara tambahan (mereplikasi file yang hilang di kedua lokasi) pada proses awal, kemudian membuat dan memelihara pohon sinkronisasi pada mesin Anda, dan pada proses selanjutnya akan menerapkan sinkronisasi yang sebenarnya (yaitu, jika Anda menghapus file dari .../dirA
, itu akan dihapus dari .../dirB
demikian juga. Anda juga dapat membandingkan setiap perubahan dan secara opsional memilih untuk teruskan atau terbalik sinkronisasi antara dua direktori.
Opsional, untuk meluncurkan antarmuka grafis, cukup hapus -ui text
opsi dari perintah Anda, meskipun saya menemukan cli
lebih sederhana dan lebih cepat untuk digunakan.
Lebih lanjut tentang ini:Tutorial Unison di dokumentasi pengguna Unison.
Jawaban dari TuxForLife cukup bagus, tetapi saya sangat menyarankan Anda menggunakan -c
saat menyinkronkan secara lokal. Anda dapat berargumen bahwa itu tidak sepadan dengan hukuman waktu/jaringan untuk melakukannya untuk sinkronisasi jarak jauh, tetapi itu sangat berharga untuk file lokal karena kecepatannya sangat tinggi.
-c, --checksum This forces the sender to checksum every regular file using a 128-bit MD4 checksum. It does this during the initial file-system scan as it builds the list of all available files. The receiver then checksums its version of each file (if it exists and it has the same size as its sender-side counterpart) in order to decide which files need to be updated: files with either a changed size or a changed checksum are selected for transfer. Since this whole-file checksumming of all files on both sides of the con- nection occurs in addition to the automatic checksum verifications that occur during a file's transfer, this option can be quite slow. Note that rsync always verifies that each transferred file was correctly reconstructed on the receiving side by checking its whole-file checksum, but that automatic after-the-transfer verification has nothing to do with this option's before-the-transfer "Does this file need to be updated?" check.
Ini menunjukkan bagaimana memiliki ukuran dan stempel waktu yang sama dapat mengecewakan Anda.
Penyiapan
$ cd /tmp
$ mkdir -p {A,b}/1/2/{3,4}
$ echo "\___________from A" | \
tee A/1/2/x | tee A/1/2/3/y | tee A/1/2/4/z | \
tr A b | \
tee b/1/2/x | tee b/1/2/3/y | tee b/1/2/4/z | \
tee b/1/2/x0 | tee b/1/2/3/y0 > b/1/2/4/z0
$ find A b -type f | xargs -I% sh -c "echo %; cat %;"
A/1/2/3/y
\___________from A
A/1/2/4/z
\___________from A
A/1/2/x
\___________from A
b/1/2/3/y
\___________from b
b/1/2/3/y0
\___________from b
b/1/2/4/z
\___________from b
b/1/2/4/z0
\___________from b
b/1/2/x
\___________from b
b/1/2/x0
\___________from b
Rsync yang tidak menyalin apa pun karena semua file memiliki ukuran dan stempel waktu yang sama
$ rsync -avu A/ b
building file list ... done
sent 138 bytes received 20 bytes 316.00 bytes/sec
total size is 57 speedup is 0.36
$ find A b -type f | xargs -I% sh -c "echo %; cat %;"
A/1/2/3/y
\___________from A
A/1/2/4/z
\___________from A
A/1/2/x
\___________from A
b/1/2/3/y
\___________from b
b/1/2/3/y0
\___________from b
b/1/2/4/z
\___________from b
b/1/2/4/z0
\___________from b
b/1/2/x
\___________from b
b/1/2/x0
\___________from b
Rsync yang bekerja dengan benar karena membandingkan checksum
$ rsync -cavu A/ b
building file list ... done
1/2/x
1/2/3/y
1/2/4/z
sent 381 bytes received 86 bytes 934.00 bytes/sec
total size is 57 speedup is 0.12
$ find A b -type f | xargs -I% sh -c "echo %; cat %;"
A/1/2/3/y
\___________from A
A/1/2/4/z
\___________from A
A/1/2/x
\___________from A
b/1/2/3/y
\___________from A
b/1/2/3/y0
\___________from b
b/1/2/4/z
\___________from A
b/1/2/4/z0
\___________from b
b/1/2/x
\___________from A
b/1/2/x0
\___________from b