Untuk memecah ini menjadi beberapa bagian, ada dua bagian utama, diikuti oleh ringkasan dan catatan:
The rsyncperintah: rsync -uva --delete /srv/bkp01 /srv/offbk2/
pengalihan output dilakukan oleh shell yang menjalankan perintah rsync: rsync-command > ~/offbkp01.log
rsync perintah:
Perintah dasar:
rsync - Saya menganggap ini tidak perlu penjelasan (tetapi akan memberikan jika diminta).
Opsi perintah:
-uva - Satu set opsi karakter tunggal, sedang (bentuk pendek lalu panjang ditunjukkan):
-u--update- Memberitahu rsync bahwa semua modifikasi hanya berlaku untuk file pada tujuan yang usianya sama (dan ukurannya berbeda) atau lebih tua dari yang ada di sumber. Artinya, rsync seharusnya hanya meneruskan perubahan dari sumber yang akan memperbarui tujuan, tetapi seharusnya tidak membuat perubahan apa pun yang akan membuat file tujuan menjadi versi yang lebih lama.
Ada beberapa pengecualian. Perbedaan jenis (misalnya, satu adalah file, yang lainnya adalah direktori) akan menyebabkan pembaruan terlepas dari tanggal. Symlinks dan file khusus lainnya mengabaikan opsi ini. Dan, yang penting, ini tidak mempengaruhi file mana yang dihapus.
-v--verbose- Meningkatkan jumlah informasi yang dicetak rsync saat mengeksekusi. Tanpa ini, rsync tidak akan mencetak (hampir?) Dengan opsi ini apa adanya, rsync akan memberi tahu Anda file mana yang sedang ditransfer, dan meletakkan ringkasan di bagian akhir. Lebih banyak vmeningkatkan informasi yang dicetak, meskipun halaman manual mengatakan lebih dari dua vhanya boleh digunakan saat debugging.
-a--archive- Ini sama dengan beberapa opsi lain ( -rlptgD) yang dipaket bersama. Seperti namanya, ini adalah cara cepat untuk mengatur banyak opsi umum untuk pengarsipan file dan direktori. Itu akan:
-r--recursive- Memberitahu rsync untuk menyalin direktori secara rekursif. Tanpa ini, atau opsi yang lebih khusus -d--dirs, rsync hanya akan melewatkan direktori apa pun yang dijumpainya (dan memberi tahu Anda tentang hal itu dalam outputnya).
-l--links- Ketika sumbernya adalah symlink, buat symlink di tujuan. Bergantung pada opsi lain, symlink dapat dilewati atau dibuat menjadi salinan terpisah penuh (yaitu, direktori yang benar dengan konten (atau salinan file lain) alih-alih symlink).
-p--perms - Menetapkan izin file tujuan sama dengan file sumber.
-t--times- Mengatur waktu modifikasi dari file tujuan menjadi sama dengan file sumber. Karena menjaga waktu ini dalam sinkronisasi membuat algoritma rsync lebih efisien, Anda biasanya selalu ingin ini digunakan, secara eksplisit atau implisit.
-g--group- Menetapkan atribut grup tujuan sama dengan sumber. Associate berdasarkan nama secara default, tetapi akan kembali ke nomor ID grup dalam beberapa keadaan. Jika rsync penerima tidak dijalankan sebagai pengguna super (atau berpura-pura --fake-super), hanya grup yang pengguna yang memanggil rsync di sisi penerima adalah anggota yang dapat diatur. Jika tidak, grup hanya akan diatur ke grup default dari pengguna yang sama yang disebutkan sebelumnya.
-D- Setara dengan opsi --devicesdan --specialsbersama - sama. Artinya:
--devices- Karakter dan blokir file perangkat ditransfer. Tidak berpengaruh jika rsync penerima tidak dijalankan sebagai super-user (atau berpura-pura --fake-super).
--specials - File khusus (seperti soket) ditransfer (jika tidak demikian).
--delete- Memberitahu rsync untuk menghapus file yang ada di tujuan, tetapi tidak pada sumbernya. Ini TIDAK terpengaruh oleh opsi pembaruan yang ditetapkan di atas (memang, bagaimana mungkin karena kebanyakan sistem file tidak akan menyimpan data yang diperlukan untuk melihat tindakan mana yang lebih baru?). Opsi ini bekerja pada sumber setelah wildcard / glob expansion, jadi dir / * tidak sama dengan dir /. Beberapa catatan penting:
Ini jelas berbahaya. Anda mungkin harus mencobanya dengan --dry-runopsi terlebih dahulu, yang akan melakukan transfer pura-pura yang memungkinkan Anda untuk memastikan tidak ada perubahan yang tidak diinginkan yang dibuat.
Jika ada kesalahan I / O (input / output) - yaitu, jika terjadi kesalahan mentransfer, membaca, atau menulis perubahan - hapus akan diabaikan sejak saat itu. Ini dapat diganti dengan --ignore-errorsopsi, meskipun Anda mungkin tidak / tidak ingin melakukan itu.
Ada beberapa variasi pada algoritma hapus, yang dapat Anda baca lebih lanjut di halaman manual. Ketika rsync penerima adalah versi 3.0.0 atau lebih baru (pada saat penulisan ini) --delete-duringalgoritma digunakan. Jika penerima lebih tua, maka --delete-beforedigunakan. Jika penting bahwa file mempertahankan semacam konsistensi tertentu jika terjadi kesalahan (seperti tidak menghapus apa pun sampai semua perubahan lain dilakukan), Anda harus menggunakan opsi yang lebih spesifik daripada yang default.
Lokasi perintah:
/srv/bkp01- File sumber atau direktori. Ada beberapa aturan terperinci tentang apa artinya jika ada / bukan garis miring pada akhir direktori, dan jika direktori lain ada. Anda dapat melihat bagian USAGE dari halaman manual untuk detailnya, tetapi di sini kurangnya garis miring berarti direktori ini akan disalin ke tujuan, daripada isi direktori ini disalin ke tujuan. Sama jika ini adalah file daripada direktori.
/srv/offbk2/- Direktori tujuan. Secara umum, ini akan selalu menjadi item terakhir yang tercantum di bagian perintah rsync kecuali jika opsi digunakan untuk menentukannya di tempat lain dalam perintah.
Pengalihan output Shell:
Perintah Shell:
>- Ini mengarahkan ulang stdout (output standar) dari apa pun di sebelah kiri ke file di sebelah kanan, menjadi isinya, dan membuat file (jika mungkin) jika belum ada. Beberapa catatan:
Anda juga dapat mengarahkan ulang stderr (output kesalahan standar) ke file yang sama dengan menambahkan 2>&1pada bagian paling akhir dari perintah di atas. Ketertiban itu penting, jadi berhati-hatilah menggeneralisasi tempat untuk meletakkannya. Angka ajaib 1mengacu pada stdout, 2mengacu pada stderr, &adalah (pada dasarnya) "alamat", dan potongan perintah penuh berarti "mengarahkan output stderr ke aliran stdout".
Jika Anda ingin menambahkan file log alih-alih menggantinya, Anda dapat menggunakannya >>. Metode untuk mengarahkan stderr ke tempat yang sama tetap sama.
Anda dapat mengirim stdout dan stderr ke berbagai tempat dengan menggunakan 1> stdout_file 2> stderr_file. Anda juga dapat menggunakan >>alih-alih >dalam perintah itu untuk melakukannya dengan menambahkan alih-alih mengganti.
Variabel shell / simbol khusus:
~ - Ini adalah singkatan untuk direktori home pengguna saat ini, dan merupakan bagian dari bit berikutnya.
Lokasi tingkat shell:
~/offbkp01.log- file offbkp01.log di dalam direktori home pengguna saat ini. Di sinilah output dari perintah rsync akan diletakkan karena pengalihan dengan >.
Ringkasan:
Singkatnya, perintah ini akan:
Salin semua file, direktori, symlink, file khusus, dan file perangkat biasa
serta sebagian besar, jika tidak semua, atribut file penting ,
dari/srv/bkp01 ,
untuk/srv/offbk2/bkp01 ,
dan itu akan menghapus apa pun /srv/offbk2/yang tidak ada/srv/bkp01 , dengan ketentuan sebagai berikut:
Jika sebuah file biasa, direktori, atau symlink (?) Memiliki waktu modifikasi pada /srv/offbk2/yang lebih baru dari waktu modifikasi pada /srv/bkp01, itu tidak akan diperbarui , jika kedua item masih jenis yang sama (file biasa, direktori, atau symlink (? )).
Selain itu, rsync akan mencetak beberapa informasi tentang apa yang dilakukannya (khususnya, file mana yang sedang ditransfer, dan ringkasan akhir ), yang mana shell akan menulis ke dalam file~/offbkp01.log . File log itu akan dibuat lagi jika belum ada, dan akan ditimpa jika sudah ada.
NB: --fake-superadalah opsi yang digunakan untuk menyebabkan rsync mensimulasikan aktivitas pengguna super. Ini dilakukan dengan menggunakan atribut yang diperluas file untuk menyimpan atribut yang tidak dapat ditetapkan tanpa memiliki hak yang lebih besar. Versi nyata dari setiap atribut diatur ke apa pun yang masuk akal mengingat opsi dan hak istimewa yang tersedia. Meskipun hal ini memudahkan untuk membuat beberapa cadangan bahkan jika Anda tidak memiliki hak istimewa pengguna super, kita juga harus mencatat bahwa itu dapat menimbulkan risiko keamanan yang lebih besar daripada penggunaan rsync secara umum, karena atribut keamanan sebenarnya mungkin tidak ditetapkan. benar, meskipun informasi tentang mereka didukung.
Sumber: banyak waktu bekerja dengan rsync dan membaca halaman manualnya .
Itu satu posting pertama yang mengesankan. Semoga kamu tetap disini!
terdon
Saya kedua @terdon .. Sial! dia terbakar. Pertahankan rekan kerja yang baik. Ini memang jawaban yang mengesankan.
AzkerM
Jawabannya sepertinya seperti "sherlock holmes", saya suka gaya penjelasan Anda ..
Rahul Patil
9
Dari manual:
--menghapus
Ini memberitahu rsync untuk menghapus file asing dari sisi penerima (yang tidak ada di sisi pengirim), tetapi hanya untuk direktori yang sedang disinkronkan. Anda harus meminta rsync untuk mengirim seluruh direktori (mis. "Dir" atau "dir /") tanpa menggunakan wildcard untuk isi direktori (mis. "Dir / *") karena wildcard diperluas oleh shell dan rsync dengan demikian mendapat permintaan untuk mentransfer file individual, bukan direktori induk file. File yang dikecualikan dari transfer juga dikecualikan dari dihapus kecuali Anda menggunakan opsi --delete-dikecualikan atau tandai aturan sebagai hanya cocok di sisi pengiriman (lihat pengubah sertakan / kecualikan di bagian FILTER RULES).
Jadi itu akan menghapus file dari tujuan yang bukan bagian dari direktori asli jika Anda tidak menggunakan wildcard.
Direktori sumber:
1.txt
2.txt
3.txt
Direktori tujuan:
4.txt
4.txt akan hilang setelah rsync dan 1.txt, 2.txt dan 3.txt akan sampai di tujuan.
Mengenai hal-hal lain:
uva
memperbarui file
verbose: gema hasil ke terminal (mis. redirect ke file log Anda jadi ya ke pertanyaan terakhir)
arsip: mode arsip; sama dengan -rlptgoD (no -H, -A, -X)
Tidak, itu hanya menghapus file asing dari bkp01direktori.
Juga:
-u, --update- lewati file yang lebih baru pada receiver
-v, --verbose- meningkatkan verbositas
-a, --archive- mode arsip; sama dengan -rlptgoD (no -H, -A, -X)
Output dari rsync -uva --delete /srv/bkp01 /srv/offbk2/perintah dikirim ke ~/offbkp01.logfile menggunakan operator redirection ( >) alih-alih dicetak di terminal Anda. Jika file tidak ada maka akan dibuat. Jika file itu ada, konten lama itu akan dihapus.
Jawaban:
Untuk memecah ini menjadi beberapa bagian, ada dua bagian utama, diikuti oleh ringkasan dan catatan:
rsync
perintah:rsync -uva --delete /srv/bkp01 /srv/offbk2/
rsync-command > ~/offbkp01.log
rsync
perintah:Perintah dasar:
rsync
- Saya menganggap ini tidak perlu penjelasan (tetapi akan memberikan jika diminta).Opsi perintah:
-uva
- Satu set opsi karakter tunggal, sedang (bentuk pendek lalu panjang ditunjukkan):-u
--update
- Memberitahu rsync bahwa semua modifikasi hanya berlaku untuk file pada tujuan yang usianya sama (dan ukurannya berbeda) atau lebih tua dari yang ada di sumber. Artinya, rsync seharusnya hanya meneruskan perubahan dari sumber yang akan memperbarui tujuan, tetapi seharusnya tidak membuat perubahan apa pun yang akan membuat file tujuan menjadi versi yang lebih lama.Ada beberapa pengecualian. Perbedaan jenis (misalnya, satu adalah file, yang lainnya adalah direktori) akan menyebabkan pembaruan terlepas dari tanggal. Symlinks dan file khusus lainnya mengabaikan opsi ini. Dan, yang penting, ini tidak mempengaruhi file mana yang dihapus.
-v
--verbose
- Meningkatkan jumlah informasi yang dicetak rsync saat mengeksekusi. Tanpa ini, rsync tidak akan mencetak (hampir?) Dengan opsi ini apa adanya, rsync akan memberi tahu Anda file mana yang sedang ditransfer, dan meletakkan ringkasan di bagian akhir. Lebih banyakv
meningkatkan informasi yang dicetak, meskipun halaman manual mengatakan lebih dari duav
hanya boleh digunakan saat debugging.-a
--archive
- Ini sama dengan beberapa opsi lain (-rlptgD
) yang dipaket bersama. Seperti namanya, ini adalah cara cepat untuk mengatur banyak opsi umum untuk pengarsipan file dan direktori. Itu akan:-r
--recursive
- Memberitahu rsync untuk menyalin direktori secara rekursif. Tanpa ini, atau opsi yang lebih khusus-d
--dirs
, rsync hanya akan melewatkan direktori apa pun yang dijumpainya (dan memberi tahu Anda tentang hal itu dalam outputnya).-l
--links
- Ketika sumbernya adalah symlink, buat symlink di tujuan. Bergantung pada opsi lain, symlink dapat dilewati atau dibuat menjadi salinan terpisah penuh (yaitu, direktori yang benar dengan konten (atau salinan file lain) alih-alih symlink).-p
--perms
- Menetapkan izin file tujuan sama dengan file sumber.-t
--times
- Mengatur waktu modifikasi dari file tujuan menjadi sama dengan file sumber. Karena menjaga waktu ini dalam sinkronisasi membuat algoritma rsync lebih efisien, Anda biasanya selalu ingin ini digunakan, secara eksplisit atau implisit.-g
--group
- Menetapkan atribut grup tujuan sama dengan sumber. Associate berdasarkan nama secara default, tetapi akan kembali ke nomor ID grup dalam beberapa keadaan. Jika rsync penerima tidak dijalankan sebagai pengguna super (atau berpura-pura--fake-super
), hanya grup yang pengguna yang memanggil rsync di sisi penerima adalah anggota yang dapat diatur. Jika tidak, grup hanya akan diatur ke grup default dari pengguna yang sama yang disebutkan sebelumnya.-D
- Setara dengan opsi--devices
dan--specials
bersama - sama. Artinya:--devices
- Karakter dan blokir file perangkat ditransfer. Tidak berpengaruh jika rsync penerima tidak dijalankan sebagai super-user (atau berpura-pura--fake-super
).--specials
- File khusus (seperti soket) ditransfer (jika tidak demikian).--delete
- Memberitahu rsync untuk menghapus file yang ada di tujuan, tetapi tidak pada sumbernya. Ini TIDAK terpengaruh oleh opsi pembaruan yang ditetapkan di atas (memang, bagaimana mungkin karena kebanyakan sistem file tidak akan menyimpan data yang diperlukan untuk melihat tindakan mana yang lebih baru?). Opsi ini bekerja pada sumber setelah wildcard / glob expansion, jadi dir / * tidak sama dengan dir /. Beberapa catatan penting:--dry-run
opsi terlebih dahulu, yang akan melakukan transfer pura-pura yang memungkinkan Anda untuk memastikan tidak ada perubahan yang tidak diinginkan yang dibuat.--ignore-errors
opsi, meskipun Anda mungkin tidak / tidak ingin melakukan itu.--delete-during
algoritma digunakan. Jika penerima lebih tua, maka--delete-before
digunakan. Jika penting bahwa file mempertahankan semacam konsistensi tertentu jika terjadi kesalahan (seperti tidak menghapus apa pun sampai semua perubahan lain dilakukan), Anda harus menggunakan opsi yang lebih spesifik daripada yang default.Lokasi perintah:
/srv/bkp01
- File sumber atau direktori. Ada beberapa aturan terperinci tentang apa artinya jika ada / bukan garis miring pada akhir direktori, dan jika direktori lain ada. Anda dapat melihat bagian USAGE dari halaman manual untuk detailnya, tetapi di sini kurangnya garis miring berarti direktori ini akan disalin ke tujuan, daripada isi direktori ini disalin ke tujuan. Sama jika ini adalah file daripada direktori./srv/offbk2/
- Direktori tujuan. Secara umum, ini akan selalu menjadi item terakhir yang tercantum di bagian perintah rsync kecuali jika opsi digunakan untuk menentukannya di tempat lain dalam perintah.Pengalihan output Shell:
Perintah Shell:
>
- Ini mengarahkan ulang stdout (output standar) dari apa pun di sebelah kiri ke file di sebelah kanan, menjadi isinya, dan membuat file (jika mungkin) jika belum ada. Beberapa catatan:2>&1
pada bagian paling akhir dari perintah di atas. Ketertiban itu penting, jadi berhati-hatilah menggeneralisasi tempat untuk meletakkannya. Angka ajaib1
mengacu pada stdout,2
mengacu pada stderr,&
adalah (pada dasarnya) "alamat", dan potongan perintah penuh berarti "mengarahkan output stderr ke aliran stdout".>>
. Metode untuk mengarahkan stderr ke tempat yang sama tetap sama.1> stdout_file 2> stderr_file
. Anda juga dapat menggunakan>>
alih-alih>
dalam perintah itu untuk melakukannya dengan menambahkan alih-alih mengganti.Variabel shell / simbol khusus:
~
- Ini adalah singkatan untuk direktori home pengguna saat ini, dan merupakan bagian dari bit berikutnya.Lokasi tingkat shell:
~/offbkp01.log
- file offbkp01.log di dalam direktori home pengguna saat ini. Di sinilah output dari perintah rsync akan diletakkan karena pengalihan dengan>
.Ringkasan:
Singkatnya, perintah ini akan:
/srv/bkp01
,/srv/offbk2/bkp01
,dan itu akan menghapus apa pun
/srv/offbk2/
yang tidak ada/srv/bkp01
, dengan ketentuan sebagai berikut:/srv/offbk2/
yang lebih baru dari waktu modifikasi pada/srv/bkp01
, itu tidak akan diperbarui , jika kedua item masih jenis yang sama (file biasa, direktori, atau symlink (? )).Selain itu, rsync akan mencetak beberapa informasi tentang apa yang dilakukannya (khususnya, file mana yang sedang ditransfer, dan ringkasan akhir ), yang mana shell akan menulis ke dalam file
~/offbkp01.log
. File log itu akan dibuat lagi jika belum ada, dan akan ditimpa jika sudah ada.NB:
--fake-super
adalah opsi yang digunakan untuk menyebabkan rsync mensimulasikan aktivitas pengguna super. Ini dilakukan dengan menggunakan atribut yang diperluas file untuk menyimpan atribut yang tidak dapat ditetapkan tanpa memiliki hak yang lebih besar. Versi nyata dari setiap atribut diatur ke apa pun yang masuk akal mengingat opsi dan hak istimewa yang tersedia. Meskipun hal ini memudahkan untuk membuat beberapa cadangan bahkan jika Anda tidak memiliki hak istimewa pengguna super, kita juga harus mencatat bahwa itu dapat menimbulkan risiko keamanan yang lebih besar daripada penggunaan rsync secara umum, karena atribut keamanan sebenarnya mungkin tidak ditetapkan. benar, meskipun informasi tentang mereka didukung.Sumber: banyak waktu bekerja dengan rsync dan membaca halaman manualnya .
sumber
Dari manual:
Jadi itu akan menghapus file dari tujuan yang bukan bagian dari direktori asli jika Anda tidak menggunakan wildcard.
Direktori sumber:
Direktori tujuan:
4.txt akan hilang setelah rsync dan 1.txt, 2.txt dan 3.txt akan sampai di tujuan.
Mengenai hal-hal lain:
sumber
man rsync
Tidak, itu hanya menghapus file asing dari
bkp01
direktori.Juga:
-u
,--update
- lewati file yang lebih baru pada receiver-v
,--verbose
- meningkatkan verbositas-a
,--archive
- mode arsip; sama dengan -rlptgoD (no -H, -A, -X)Output dari
rsync -uva --delete /srv/bkp01 /srv/offbk2/
perintah dikirim ke~/offbkp01.log
file menggunakan operator redirection (>
) alih-alih dicetak di terminal Anda. Jika file tidak ada maka akan dibuat. Jika file itu ada, konten lama itu akan dihapus.Lihat
man rsync
untuk info lebih lanjut.sumber
bkp01
. Itu hanya menghapus file asing - yaitu yang tidak ada di sumber - dari tujuan.Salinan file jarak jauh - Menyinkronkan pohon file di disk lokal, direktori atau di seluruh jaringan.
Ini dia akan menghapus file di dalam offbk2 .
Maka output dari hasil (sukses atau tidak) akan diarahkan ke file log itu.
sumber