Apakah berisiko mengganti nama folder dengan 180GB dengan mv
perintah?
Kami memiliki folder /data
yang berisi 180GB.
Kami ingin mengganti nama /data
folder menjadi /BD_FILES
dengan mv
perintah.
Apakah aman untuk melakukan itu?
Apakah berisiko mengganti nama folder dengan 180GB dengan mv
perintah?
Kami memiliki folder /data
yang berisi 180GB.
Kami ingin mengganti nama /data
folder menjadi /BD_FILES
dengan mv
perintah.
Apakah aman untuk melakukan itu?
Jawaban:
Mengubah nama pada folder aman, jika tetap dalam sistem file yang sama.
Jika itu adalah titik mount ( /data
sepertinya itu bisa menjadi titik mount bagi saya, periksa ini dengan mount
), maka Anda perlu melakukan sesuatu selain dari yang sederhana mv
karena mv /data /BD_FILES
akan memindahkan data ke partisi root (yang mungkin bukan Anda ingin terjadi).
Anda harus meng-unmount sistem file, mengganti nama direktori yang sekarang kosong, memperbarui /etc/fstab
dengan lokasi baru untuk sistem file ini, dan kemudian memasang kembali sistem file di lokasi yang diubah namanya.
Dengan kata lain,
umount /data
mv /data /BD_FILES
(dengan asumsi /BD_FILES
belum ada, dalam hal ini, pindahkan dulu.)/etc/fstab
, mengubah titik pemasangan dari /data
menjadi/BD_FILES
mount /BD_FILES
Ini tidak melibatkan menyalin file apa pun di sekitar, itu hanya mengubah nama direktori yang bertindak sebagai titik mount untuk sistem file.
Jika mengubah nama direktori melibatkan memindahkannya ke sistem file baru (yang akan terjadi jika /data
berada di satu disk saat /BD_FILES
berada di disk lain, hal yang umum dilakukan jika Anda memindahkan sesuatu ke partisi yang lebih besar, misalnya) , Saya merekomendasikan untuk menyalin data sambil membiarkan yang asli tetap utuh sampai Anda dapat memeriksa apakah salinannya ok. Anda dapat melakukan ini dengan
rsync -a /data/ /BD_FILES/
misalnya, tetapi lihat rsync
manual untuk apa yang dilakukan dan tidak dilakukan (tidak mempertahankan tautan keras, misalnya).
Setelah folder diganti nama, Anda juga perlu memastikan bahwa prosedur yang ada (program dan pengguna yang menggunakan folder, cadangan dll.) Mengetahui perubahan nama.
mv
untuk hanya melakukan rename
panggilan sistem, tetapi karena keadaan seseorang tidak menyadari itu akan menyalin file dan menghapus yang asli. Jika saya harus benar-benar yakin hanya rename
panggilan sistem dibuat dan mv
tidak akan melakukan sesuatu yang "pintar" di belakang saya, saya membuka shell Python dan menggunakan os.rename
.
mkdir /BD_FILES && mount -M /data /BD_FILES && rmdir /data
rsync
itu adalah restart.
rsync -a
mempertahankan hampir semua metadata, tetapi bukan tautan keras, ACL, atau atribut yang diperluas (tambahkan -HAX
untuk itu).
rename
perintah berbeda dengan perilaku berbeda. Saya pikir itu alasan yang cukup untuk tidak menggunakan rename
perintah ketika Anda ingin memastikan apa yang akan dilakukan.
Anda tidak mengganti nama setiap file di direktori, Anda mengganti nama satu file di /. Itu karena:
Dengan demikian, mengubah nama direktori, tidak peduli berapa banyak file atau berapa banyak data di dalamnya, sepele.
Jika Anda baru saja mengganti nama (sumber dan target dalam sistem file yang sama ), itu hanya mengubah nama entri direktori. Entah berhasil dan direktori memiliki nama baru, atau gagal dalam hal ini tidak ada yang berubah * .
Jika sumber dan target berada pada sistem file yang berbeda, data perlu disalin mv
. Perbedaan fitur sistem file, seperti ukuran file maksimum, batasan nama file, dll., Dapat menyebabkan masalah. Untuk menghindari masalah, salin dulu file ( cp
,rsync
...) dan setelah salin selesai, hapus file di lokasi asli.
* Namun ada beberapa kasus sudut, misalnya disebutkan di bagian BUGS di man 2 ganti nama
Seperti yang orang lain katakan, mengganti nama folder tidak menimbulkan risiko yang melekat pada konten. Tetapi ada berbagai jenis risiko yang mungkin ingin Anda pertimbangkan.
Prosedur yang ada, skrip, pintasan yang ditentukan pengguna, dan konfigurasi yang merujuk pada lokasi asli dapat rusak oleh perubahan ini, dan jika jalur disimpan dalam database, misalnya, memperbarui mereka bisa menjadi pekerjaan besar.
Satu hal yang dapat Anda lakukan adalah membuat tautan simbolis untuk nama direktori baru, tetapi biarkan nama lama tetap di tempatnya untuk sementara waktu. Itu akan memberi Anda waktu untuk mengevaluasi dampak dari perubahan ini. Anda dapat menghapus sementara nama lama, melihat apakah ada masalah, dan jika ada, cukup buat ulang nama lama sehingga orang dapat terus bekerja sambil mencari tahu apa yang perlu diperbarui.
Perintah seperti ini harus melakukannya:
ln -s /data /BD_FILES
mv thing1 thing2 ; ln --symbolic ./thing2 thing1
. Dengan begitu saya mendapatkan nama baru dan dapat dengan mudah menguji tidak adanya yang lama dengan menghapus symlink.
Ganti nama adalah atom. Satu-satunya risiko yang masuk akal adalah bahwa mv
memutuskan untuk menyalin segala sesuatu karena suatu alasan dan itu crash setengah jalan. Jika Anda memiliki GNU mv
, mv -T
akan menghapus risiko ini.
mv -T
memberitahu mv
bahwa itu pindah ke non-folder; yang akan menyebabkannya menolak untuk melakukan mkdir()
yang pada gilirannya akan menyebabkannya gagal jika memindahkan folder dan memutuskan untuk menyalin karena suatu alasan.
Saya terlibat dalam mengguncang serangga mv -T
saat mengerjakan tesis master saya bertahun-tahun yang lalu. Dulu melakukan hal yang salah pada terlalu banyak kasus tepi.
Di sisi lain, Anda memiliki data pengguna 180GB di partisi root. Anda mungkin ingin memindahkan ini dari partisi root.
mv
dengan-i
pilihan.