Saya memiliki direktori yang berisi banyak file hasil log (ukuran direktori ~ 4GB), dan serangkaian proses yang berjalan yang terus menulis ke file-file ini.
Agar dapat menganalisis hasil dengan benar di lain waktu, saya ingin menyalin seluruh direktori ke tujuan arsip, dan saya tidak bisa menghentikan proses.
Saya ingin salinan direktori seperti pada titik waktu tertentu. Karena direktori ukurannya sangat besar (artinya perlu sekitar 40 detik untuk menyalin) dan beberapa file sedang ditulis, cp -r
TIDAK memberi saya snapshot pada titik waktu tertentu, melainkan snapshot file yang tersebar selama 40 detik. Hal ini tidak cukup baik.
Apakah ada cara untuk mendapatkan kunci eksklusif pada direktori dan semua komponennya saat menyalin?
linux
file-transfer
Lazer
sumber
sumber
Jawaban:
LVM (Logical Volume Manager) mendukung snapshot. Karena semua distribusi Linux memiliki built-in LVM, itu yang paling mudah untuk Anda. Satu-satunya downside adalah Anda perlu membuat ulang sistem file Anda.
Ini tutorial yang bagus http://rhcelinuxguide.wordpress.com/2006/06/03/what-is-a-logical-volume-manager-lvm-snapshot-and-how-do-i-use-it/
sumber
Jika cp terlalu lama untuk memberikan hasil yang Anda butuhkan, Anda kemungkinan besar tidak akan puas dengan opsi lain. Salinan Unix adalah tentang sebagai dasar karena mendapat untuk I / O overhead.
Namun, jika Anda memperlambat proses I / O membeli meningkatkan proses manajemen lain antara disk dan file saat mereka berubah, overhead mungkin tidak masalah. Maksud saya adalah, Anda dapat menjalankan proses dalam VM (jika ini memungkinkan), coba snapshot dengan rsync, atau bahkan subversi.
Satu-satunya hal lain yang dapat saya pikirkan adalah mungkin mem-pipkan output log ke tautan simbolik dan memperbarui tautan ke lokasi sekunder dengan file batch.
Contohnya:
file.log - & gt; /mnt/disk1/logarea/file.log
file.log - & gt; /mnt/disk/logarea2/file.log
Sehingga Anda dapat memperbarui tautan simbolik secara instan, dan pipa keluaran ke lokasi baru.
Anda bahkan dapat menulis file kumpulan untuk memperbarui tautan, menghitung hingga 45 detik, dan kemudian beralih kembali - sehingga mengisolasi data yang Anda butuhkan.
Hanya pikiran, semoga sukses.
sumber
Cara berbeda untuk melakukannya adalah menggunakan Logrotate untuk mengarsipkan log setiap minggu / hari / jam, maka pada dasarnya Anda memiliki snapshot pada interval itu.
sumber
Beberapa sistem file menyediakan fasilitas snapshot. Membuat sistem file (pada area drive yang tidak digunakan, atau dalam file data khusus [loopback]) menggunakan salah satu dari sistem file ini dan kemudian memasang bahwa di mana log Anda ditulis akan memungkinkan Anda untuk memotret sistem file log.
Sistem file yang dikenal untuk mendukung snapshot:
Mungkin ada lebih banyak, tetapi itu adalah yang bisa saya pikirkan dari atas kepala saya.
Snapshots tidak menyalin data, melainkan membekukan data pada saat tertentu dan membuat sistem file virtual yang berisi data yang dapat dipasang dan digunakan seperti sistem file lainnya (walaupun hanya baca-saja). Sistem file asli terus berfungsi seolah-olah tidak ada yang terjadi.
sumber
Terus terang, untuk apa yang Anda minta untuk satu-satunya hal yang berhasil bagi saya adalah ZFS-FUSE. Ada juga ZFS asli untuk Linux tetapi belum benar-benar dapat digunakan.
sumber