Untuk melakukan ini setiap hari di sebagian besar distro Linux, Anda harus bisa memasukkan rsync
perintah (sesuai jawaban @ guido ) dalam sebuah skrip dan memasukkan skrip ke dalam /etc/cron.daily
direktori. Selama anacron
diinstal (mungkin tidak secara default) setiap cron.daily
pekerjaan yang tidak terjawab akan menyusul pada saat mesin dinyalakan (serta dijalankan pada tengah malam jika mesin diaktifkan).
Untuk skrip yang akan Anda lakukan:
#!/bin/sh
rsync -a user@serverB:/source/folder/ /destination_folder
Anda dapat menambahkan opsi -z
(kompresi) jika cadangan melalui koneksi yang lambat (ish) atau jika Anda ingin menghemat bandwidth, tetapi dalam pengalaman saya itu sebenarnya akan merusak kinerja dengan mesin / jaringan modern.
Jika Anda ingin menyimpan log dari setiap cadangan, Anda dapat melakukan sesuatu seperti:
#!/bin/sh
rsync -av user@serverB:/source/folder/ /destination_folder \
>/var/log/backup_log 2>&1
Catatan agar ini berfungsi sebagai tugas cron, Anda harus memiliki ssh tanpa kata sandi yang diatur untuk root pada serverA untuk masuk ke serverB. Itu harus menjadi akun root (mis. Kunci masuk /root/.ssh
) karena cron.daily
pekerjaan dijalankan sebagai root.
anacron
tidak akan mengambil percron
pekerjaan pengguna . Meskipun Anda selalu dapat menggunakansu
/sudo
dari skrip untuk menjalankan rsync sebagai pengguna tertentu. Tetapi perhatikan bahwa kunci akan lebih aman dipegang di bawah/root
.user
bisa saja menjadi pengguna normal pada mesinB tergantung pada apa yang Anda cadangkan.ls -l
pada beberapa file untuk pertanyaan Anda, maka orang dapat memberikan saran lebih lanjut.Saya sarankan menggunakan rdiff-backup . Saya menggunakannya sekarang untuk membuat backup inkremental otomatis setiap malam dari data saya sendiri (dua workstation, dua server dan satu akun di server orang lain).
Saya menggunakan rsync sebelumnya untuk ini, tetapi beralih ke rdiff-backup karena lebih nyaman, dan itu dapat membuat cadangan tambahan file besar seperti gambar disk mesin virtual. rdiff-backup sangat mirip dengan skrip backup rsync saya sebelumnya, tetapi dilakukan dengan benar .
Saya telah meletakkan file skrip di /etc/cron.daily di mesin tempat cadangan disimpan, yang memulai rdiff-cadangan sekali setiap hari di pagi hari, dan mengambil data dari mesin jarak jauh.
sumber
Selain semua jawaban sebelumnya, berikut adalah salah satu yang bergantung pada kunci SSH dengan batasan pada apa yang bisa dilakukan ketika masuk dengan kunci itu.
Di server A
Yang ini kurang penting jika Anda membuat pengguna terpisah atau menggunakan salah satu nama pengguna yang ada, meskipun jika itu saya, saya akan membuat pengguna terpisah. Saya akan menggunakan nama pengguna
bkpuser
untuk kedua server dalam contoh saya di bawah ini.Saat masuk
bkpuser
, buat kunci SSH tanpa kata sandi.Di server B
Aktifkan
PubkeyAuthentication
disshd_config
.Buat pengguna
bkpuser
. Tetapkan kata sandi yang sangat rumit, atau nonaktifkan login kata sandi untuk pengguna tersebut (cara Anda melakukannya tergantung pada unix dan distro yang Anda jalankan). Intinya, pengguna hanya harus login dengan kunci SSH. Pastikan yangbkpuser
memiliki akses baca ke semua direktori dan file yang ingin Anda buat cadangannya.Salin bagian publik dari kunci yang dibuat pada A ke
~bkpuser/.ssh/authorized_keys
pada B. Edit untuk secara otomatis menjalankan perintah pada koneksi. Perintah itu seharusnya tidak menjadi pointer ke skrip shell; alih-alih masukkan skrip shell ke kunci secara langsung. Juga termasuk batasan sehingga kunci hanya dapat digunakan dari server A dan tidak ada server lain. Dalam contoh di bawah ini, saya memberikan server A alamat IP10.1.2.3
dan saya berasumsi bahwa file yang ingin saya buat cadangan semuanya ada di bawah/data
.Di server A
Jika Anda menggunakan salah satu tab cron yang mendukung
@reboot
entri, tambahkan entri seperti itu kebkpuser
s crontab dengan perintahssh -i ~bkpuser/.ssh/id_dsa serverB > backup.tar.gz
. Jika itu tidak memungkinkan, atur kapan saja Anda suka - jika itu data saya, saya mungkin melakukannya setiap hari.sumber
Berikut ini adalah solusi lengkap untuk membuat cadangan server B ke server A setiap hari pada jam 4 pagi menggunakan SSH.
Buat koneksi SSH otomatis dari server B ke server A
Buat skrip cadangan di server B
nano / root / cadangan
chmod 744 / root / cadangan
Otomatiskan cadangan pada server B
crontab -e
Untuk lebih jelasnya lihat halaman Hubungkan ke SSH tanpa memasukkan kata sandi di Linux dan Cadangkan server di Debian atau Ubuntu Linux .
sumber
Anda dapat menggunakan rsync untuk ini (dengan cara yang agak terbalik):
dimana:
sumber
-a
menyiratkan-r
.Inti masalahnya adalah bagaimana melakukannya secara otomatis (tidak perlu memasukkan kata sandi):
screen
atautmux
sesieval $(ssh-agent)
ssh-add
export RSYNC_RSH="ssh -i ~/.ssh/id_rsa ..."
while :; do rsync -av u@h:/p /local; sleep $[24*60*60]; done
sumber
ssh
.RSYNC_SSH
untuk mencari lokasi standar kunci SSH....
titik - titik tempat Anda dapat menambahkan argumen yang bermanfaat. Anda juga tidak membaca komentar terakhir saya di mana saya menyebutkan "pertanyaan yang sangat penting" sehingga saya tidak akan pernah melakukannya dengan kunci tanpa kata sandi. Anda juga harus mengaktifkanPubkeyAuthentication
dan tidak ada yang mengatakannya.