Saya mencoba mengambil snapshot dari folder besar secara teratur.
Saya telah membaca di sini: http://www.mikerubel.org/computers/rsync_snapshots/#Incremental
yang cp -al
mengambil snapshot folder hanya dengan menyalin tautan keras.
Itu semua hebat, tetapi masalahnya adalah dalam snapshot ini, jika saya mengubah file, itu berubah di semua snapshot. Yang saya inginkan sebagai gantinya adalah agar sistem membuat file baru saat diubah dan menautkannya sebagai gantinya. Dengan begitu setiap snapshot tidak akan menjadi tidak valid pada pengeditan file pertama.
Bagaimana saya bisa mencapainya?
ps saya mencoba rsync -a --delete --link-dest=../backup.1 source_directory/ backup.0/
, tetapi memiliki masalah yang sama.
rsnapshot
itu baikApa yang Anda cari adalah bentuk copy-on-write , di mana banyak file yang memiliki konten yang sama menggunakan ruang yang sama pada disk hingga salah satu dari mereka dimodifikasi. Hard link hanya menerapkan copy-on-write jika aplikasi yang melakukan penulisan menghapus file dan membuat file baru dengan nama yang sama (yang biasanya dilakukan dengan membuat file baru dengan nama yang berbeda, kemudian memindahkannya ke tempatnya). Aplikasi yang Anda gunakan ternyata tidak melakukan ini: itu menimpa file yang ada.
Beberapa aplikasi dapat dikonfigurasi untuk menggunakan strategi penggantian. Beberapa aplikasi menggunakan strategi penggantian secara default, tetapi gunakan strategi timpa ketika mereka melihat file dengan banyak tautan keras, tepatnya agar tidak memutus tautan keras. Teknik snapshot Anda saat ini akan berfungsi jika Anda dapat mengonfigurasi aplikasi Anda untuk menggantikan alih-alih menimpa.
Fl-cow memodifikasi program untuk secara sistematis menggunakan strategi penggantian pada file dengan banyak tautan keras.
Atau, Anda dapat menyimpan file Anda di sistem file yang melakukan copy-on-write atau deduplication, atau memiliki fitur snapshot, dan tidak khawatir tentang tautan keras: Btrfs atau Zfs . Bergantung pada skema partisi Anda, menggunakan snapshot LVM dapat menjadi pilihan.
Rekomendasi saya adalah menggunakan alat snapshot yang tepat. Membuat cadangan yang andal ternyata sangat sulit. Anda mungkin ingin rsnapshot .
sumber
Berikut ini adalah skrip ruby yang saya tulis yang membungkus "cp -al" dan rsync menjadi skrip yang bagus yang dapat dijalankan secara manual atau melalui cron. Tujuan dapat lokal atau jauh (via ssh):
Ghetto Timemachine
Jawaban dasar untuk pertanyaan Anda, seperti yang disebutkan dalam komentar sebelumnya, sumber harus dipisahkan dari tautan keras. Misalnya, anggap cadangan harian direktori home Anda:
Sumber:
Tujuan:
Tautan keras dibuat dengan menjalankan "cp -al" terhadap cadangan kemarin. Katakan ini hari Selasa pagi ketika Anda menjalankannya:
cd /data/backup/daily
rm -rf tuesday
cp -al monday tuesday
rsync -a --delete /home/flakrat /data/backup/daily/tuesday/
sumber
rdiff-backup tampaknya melakukan apa yang Anda inginkan, lihat
Menggunakan rsync Anda harus terlebih dahulu membuat cadangan lengkap tanpa menggunakan tautan keras. Cadangan berikutnya dapat mengarah ke cadangan sebelumnya dan tautan keras ke sana. Dengan cara itu, cadangan Anda tidak ditautkan ke file kerja Anda (yang Anda modifikasi). Contoh. Jika cadangan saya sebelumnya begitu cadangan folder.01 skrip cadangan saya pertama-tama akan menambah folder dengan mengubah nama mereka menjadi satu sehingga cadangan.01 menjadi cadangan.02. Kemudian skrip membuat folder kosong baru bernama backup.01. kemudian akan rscync cadangan baru ke folder baru dan tautan keras ke backup.02 sehingga hanya file baru yang akan mengambil ruang apa pun di cadangan. Perintah rsync akan terlihat seperti ini: rsync -rlt sourcepath backuppath / backup.01 --link-dest = backuppath / backup.02
Jadi Anda bisa lihat, semua tautan keras terjadi di jalur cadangan. Dengan cara ini Anda tidak perlu khawatir tentang salin saat menulis saat memodifikasi file di jalur sumber Anda.
sumber