Apa efek dari menyalin file katakan fileA.big (900mb) dari lokasi B ke locationC. Jika selama operasi cp itu, katakan 35% melalui proses, fileA.big ditambahkan dengan informasi baru dan tumbuh dari 900mb menjadi 930mb.
Apa hasil dari salinan akhir (yaitu fileA.big di locationC)?
Bagaimana jika salinannya sekitar 70% melalui, dan file asli diperbarui tetapi kali ini dipotong menjadi 400mb (yaitu kemajuan salinan berada di luar titik pemotongan), apa hasil dari salinan akhir?
Mengacu pada OS linux pada sistem file ext3 / ext4. Tidak ada volume shadow magic dll. Cp tua biasa saja. Keingintahuan dipicu dengan menyalin file couchdb langsung untuk cadangan, tetapi lebih tertarik pada skenario umum daripada kasus penggunaan khusus.
Jawaban:
Jika
fileA.big
ditanam selama salinan, salinan akan mencakup data yang ditambahkan.Jika file terpotong lebih pendek daripada di mana salinan saat ini berada, salinan akan dibatalkan tepat di mana di dan file tujuan akan berisi apa yang disalin hingga saat dibatalkan.
sumber
Patrick kira-kira benar, tetapi inilah sebabnya. Cara Anda menyalin file di bawah UNIX berfungsi seperti ini:
fileA
.fileB
dan loop kembali ke langkah 1.Mengetahui hal itu, dan mengetahuinya sesederhana itu, mari kita lihat beberapa kasing sudut.
Segera setelah kami menemukan akhir file, salinan selesai. Jadi misalkan file kita bertambah selama salin, tetapi tumbuh lebih lambat daripada kita menyalinnya. Program penyalinan akan terus melampaui ukuran file asli, karena pada saat ia sampai di sana, ada lebih banyak file. Tetapi pada beberapa titik, ia mengejar dengan akhir file, dan ia tahu itu pada akhirnya karena tidak dapat membaca byte lagi sekarang . Jadi itu berhenti di sana, bahkan jika file tersebut akan tumbuh lebih lanjut.
Jika file tersebut terpotong, program salin mengatakan "Wah, saya melewati akhir file!" dan berhenti.
Dan jika potongan-potongan file diperbarui secara acak oleh, katakanlah, program database :-), maka salinan Anda akan menjadi campuran dari data lama dan baru, karena data tidak semuanya disalin pada saat yang bersamaan. Hasilnya mungkin akan menjadi salinan yang rusak, itulah sebabnya itu umumnya bukan ide yang baik untuk membuat salinan dari database hidup.
(Yang mengatakan, saya tidak terbiasa dengan CouchDB, dan dimungkinkan untuk merancang basis data agar tahan terhadap korupsi semacam ini. Tetapi yang terbaik adalah benar-benar yakin.)
sumber