Saya menggunakan rsnapshot untuk membuat backup per jam "harian" / harian / mingguan / bulanan saya. Sekarang saya mencoba menyalin seluruh direktori cadangan ke drive eksternal menggunakan rsync.
Saya menggunakan perintah / parameter ini dalam sesi layar (ya, rsync-exclude.txt terletak di direktori tempat saya menjalankan perintah)
rsync -avzHP --exclude-from 'rsync-exclude.txt' /share/backup/ /share/eSATADisk1/backup/;
Semuanya berjalan pada QNAP TS-439, drive internal adalah disk tunggal (tanpa RAID) diformat EXT4, drive eksternal diformat EXT3.
Yang terjadi adalah: Rsync mengikuti setiap hardlink dan menyalin file yang sebenarnya alih-alih membuat ulang hardlink yang diperbarui pada drive eksternal. Saya tidak langsung mengenali hal ini sehingga drive eksternal tersebut akhirnya dibuang dengan xxx file yang sama.
Yang ingin saya capai adalah: Menyalin seluruh struktur file yang dihasilkan oleh rsnapshot ke drive eksternal menjaga hardlink untuk menghemat ruang. Catatan: Ini tidak harus dilakukan dengan menggunakan rsync.
Terima kasih atas ide dan waktu Anda. Saya menghargai bantuan Anda, waktu besar.
Pembaruan: Saya belajar, bahwa rsnapshot tidak menggunakan symlink, itu menggunakan hardlink jadi saya sekarang menggunakan opsi -H yang seharusnya mempertahankan struktur hardlink menurut Rsnapshot ke beberapa tujuan (atau mempertahankan struktur tautan keras) tetapi masih tidak akan berfungsi ... Apa yang kulewatkan di sini?
Pembaruan 2: Saya menemukan pendapat / pernyataan lain tentang topik ini di sini: rsync dengan --hard-links membekukan Steven Monday menyarankan untuk tidak mencoba rsync struktur file besar yang mengandung hardlink, karena ia menyerap banyak memori dan merupakan tugas yang sulit untuk rsync. Jadi mungkin solusi yang lebih baik adalah membuat .img dari struktur data yang saya coba backup. Bagaimana menurut anda?
Jawaban:
Opsi
rsync
perintah-H
(atau--hard-links
) akan, secara teori, melakukan apa yang ingin Anda capai, yaitu, secara singkat: untuk membuat salinan sistem file Anda yang mempertahankan struktur tautan keras dari dokumen asli. Seperti yang saya sebutkan dalam jawaban saya untuk pertanyaan serupa lainnya , opsi ini pasti gagal setelah sistem file sumber Anda tumbuh melampaui ambang batas kompleksitas hard link.Lokasi tepat ambang itu mungkin tergantung pada RAM Anda dan jumlah total tautan keras (dan mungkin beberapa hal lain), tetapi saya telah menemukan bahwa tidak ada gunanya mencoba mendefinisikannya dengan tepat. Yang benar-benar penting adalah bahwa ambang batas terlalu mudah untuk dilewati dalam situasi dunia nyata, dan Anda tidak akan tahu bahwa Anda telah melewatinya, sampai tiba saatnya Anda mencoba menjalankan
rsync -aH
ataucp -a
yang berjuang dan akhirnya gagal .Apa yang saya sarankan adalah ini: Salin sistem file Anda yang sangat sulit ditautkan sebagai satu unit, bukan sebagai file. Yaitu, salin seluruh partisi sistem file sebagai satu gumpalan besar. Ada sejumlah alat yang tersedia untuk melakukan ini, tetapi yang paling umum adalah di mana-mana
dd
.Dengan firmware bawaan, QNAP NAS Anda seharusnya sudah
dd
terintegrasi jugafdisk
. Denganfdisk
, buat partisi di drive tujuan yang setidaknya sama besar dengan partisi sumber. Kemudian, gunakandd
untuk membuat salinan yang tepat dari partisi sumber Anda di partisi tujuan yang baru dibuat.Ketika
dd
salinan sedang dalam proses, Anda harus memastikan bahwa tidak ada perubahan dalam sistem file sumber, jangan sampai Anda berakhir dengan salinan yang rusak di tujuan. Salah satu cara untuk melakukannya adalah keumount
sumber sebelum memulai proses penyalinan; cara lain adalah memasang sumber dalam mode read-only.sumber
--hard-links
(dengan 's').-l
adalah untuk symlink, mengapa ia melakukan apa saja untuk hardlink?(Maaf ini adalah jawaban dan bukan komentar, saya belum memiliki hak komentar dan jawaban ini membutuhkan jawaban)
Catatan lain yang harus menjadi komentar: apakah ini semua perangkat keras asli atau apakah Anda menggunakan VM, pemasangan jaringan?
Edit
abaikan komentar saya sebelumnya tentang mengapa Anda menggunakan hardlink, saya ketinggalan
rsnapshot
komentar.Akan sangat membantu untuk memiliki tes yang pertama menguji rsync antara dua direktori lokal disk lokal, kemudian terhadap disk jarak jauh Anda. Tes kecil ini menunjukkan
-H
opsi wokrs seperti yang diharapkan. The-i
pilihan untukls
menunjukkan inode, sehingga menunjukkan bahwa link telah diawetkan, dengan tidak ada salinan tambahan.Tes selanjutnya
rsync -avzHP src/ host:/tmp
ke host jarak jauh masih mempertahankan hardlinksumber
-H
di manual Anda dapat melihat bahwa ada beberapa peringatan, yang bagi saya akan mengatakan, coba, untuk menjauh dari hardlink ...Ini adalah pukulan panjang, tetapi jika Anda tidak dapat menemukan solusi lain saya sarankan mencoba memformat drive USB sebagai EXT4. Mungkin ini masalahnya: https://bugzilla.samba.org/show_bug.cgi?id=7670
sumber
Sudahkah Anda mencoba menambahkan
-l
opsi?Saya tahu halaman manual mengatakan bahwa itu termasuk
-a
tetapi halaman manual tidak selalu 100% akurat.sumber