Kecuali Anda memperkenalkan syscall untuk cp
(atau setidaknya menyalin blok), OS mengalami kesulitan untuk mengetahui bahwa data yang cp
akan ditulis oleh program sama dengan yang baru saja dibaca dari blok lain. Selain itu, Anda akan memiliki overhead tambahan untuk mengelola skenario "beberapa file berbagi blok yang sama". File besar serupa yang hanya berbeda dalam beberapa blok jarang terjadi. Jadi secara keseluruhan lebih murah hanya menyalin blok-blok itu, lalu menambahkan overhead administratif ini ke semua file.
Sekarang jika Anda "menyalin" file (banyak dari mereka) dengan menambahkan klon / snapshot lain dari sistem file di, katakanlah, BTRFS, situasinya berbeda: Sekarang Anda telah "menyalin" semua file di sistem file, dan setiap perubahan ke mereka akan menjadi copy-on-write. Ini ada, tetapi tidak di ext4.
"Journalling" adalah konsep yang sepenuhnya independen dari itu, itu adalah struktur administrasi untuk file yang diperhitungkan.