Saya memiliki jumlah data yang besar (beberapa GB) pada drive jarak jauh, yang dipasang secara transparan melalui nfs. Saya ingin menyalin file-file ini ke subdirektori di mana mereka sudah berada, jadi semuanya tetap pada disk fisik yang sama. Untuk alasan itu, saya ingin mencegah perjalanan bolak-balik yang tidak perlu melalui jaringan.
Tampaknya cp files* subdir
melakukan hal yang naif dan membaca semua data ke dalam memori dan kemudian menulisnya kembali. Benarkah itu? Apakah ada perintah khusus yang melakukan penyalinan sepenuhnya pada server yang terhubung dengan disk secara fisik?
cp
), atau memindahkan (seperti dalammv
)? Jika Anda memindahkan file, saya tidak melihat mengapa harus ada yang bolak-balik.Jawaban:
Tampaknya file cp * subdir melakukan hal yang naif dan membaca semua data ke dalam memori dan kemudian menulisnya kembali. Benarkah itu?
Iya.
Apakah ada perintah khusus yang melakukan penyalinan sepenuhnya pada server yang terhubung dengan disk secara fisik?
Tidak, kecuali Anda dapat masuk ke mesin jarak jauh dengan ssh dan melakukan penyalinan di sana.
EDIT Ada beberapa pekerjaan yang terjadi untuk menambahkan "salinan sisi server" ke protokol NFS versi 4.2 (saat ini 4.1). Lihat misalnya http://www.usenix.org/events/fast11/posters_files/Lentini.pdf . Perhatikan bahwa menggunakan fitur ini akan memerlukan a) NFS klien dan server yang mendukungnya b) syscall baru untuk OS klien (mungkin reflink atau copyfile ()?) C) dukungan untuk menggunakan syscall baru dalam utilitas biasa (cp, rsync , dll.). Dugaan saya, setidaknya beberapa tahun sebelum apa pun ini bisa dilihat.
sumber