Adakah yang bisa memberitahuku apa ini?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
Apakah itu menghapus bkp01
dan offbk2
dan mengirim log ke offbkp01.log
?
Adakah yang bisa memberitahuku apa ini?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
Apakah itu menghapus bkp01
dan offbk2
dan mengirim log ke offbkp01.log
?
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:rsync
- Saya menganggap ini tidak perlu penjelasan (tetapi akan memberikan jika diminta).-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 v
meningkatkan informasi yang dicetak, meskipun halaman manual mengatakan lebih dari dua v
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./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.>
- 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 ajaib 1
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.~
- Ini adalah singkatan untuk direktori home pengguna saat ini, dan merupakan bagian dari bit berikutnya.~/offbkp01.log
- file offbkp01.log di dalam direktori home pengguna saat ini. Di sinilah output dari perintah rsync akan diletakkan karena pengalihan dengan >
.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 .
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
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.
bkp01
. Itu hanya menghapus file asing - yaitu yang tidak ada di sumber - dari tujuan.
rsync
Salinan file jarak jauh - Menyinkronkan pohon file di disk lokal, direktori atau di seluruh jaringan.
-u update
-v verbose
-a archive
--delete --> delete
Ini dia akan menghapus file di dalam offbk2 .
Maka output dari hasil (sukses atau tidak) akan diarahkan ke file log itu.