180GB ile klasörü yeniden adlandırmak riskli mv
mi?
Biz bir klasör var /data
180GB içerir.
Biz adlandırmak istediğiniz /data
klasörü /BD_FILES
ile mv
komuta.
Bunu yapmak güvenli mi?
180GB ile klasörü yeniden adlandırmak riskli mv
mi?
Biz bir klasör var /data
180GB içerir.
Biz adlandırmak istediğiniz /data
klasörü /BD_FILES
ile mv
komuta.
Bunu yapmak güvenli mi?
Yanıtlar:
Aynı dosya sisteminde kalıyorsa, bir klasördeki adın değiştirilmesi güvenlidir.
Eğer bir bağlanma noktasıysa ( /data
bana bir bağlama noktası olabilir gibi görünüyor, bunu kontrol edin mount
), o zaman verileri basit bir bölümden başka bir şey yapmanız gerekir, mv
çünkü mv /data /BD_FILES
verileri kök bölüme taşıyacaktır (bu ne olmayabilir) olmasını istersiniz).
Dosya sistemini çıkarmalı, şimdi boş dizini yeniden adlandırmalı, /etc/fstab
bu dosya sistemi için yeni konumla güncelleştirmeli ve sonra yeniden adlandırılan konuma dosya sistemini yeniden yüklemelisiniz.
Diğer bir deyişle,
umount /data
mv /data /BD_FILES
( /BD_FILES
var olmadığı varsayılırsa , bu durumda, önce yoldan çıkarın)/etc/fstab
, bağlama noktasını olarak /data
değiştir/BD_FILES
mount /BD_FILES
Bu, herhangi bir dosyanın kopyalanmasını içermez, sadece dosya sistemi için bağlama noktası görevi gören dizinin adını değiştirir.
Dizinin yeniden adlandırılması yeni bir dosya sistemine taşınmayı içeriyorsa ( başka /data
bir diskteyken bir diskte olması durumunda , /BD_FILES
örneğin işleri daha büyük bir bölüme taşıyorsanız yapılacak genel bir şeydir) , Kopyanın uygun olup olmadığını kontrol edene kadar orijinali olduğu gibi bırakarak verileri kopyalamanızı tavsiye ederim. Bunu ile yapabilirsiniz
rsync -a /data/ /BD_FILES/
örneğin, bunun rsync
ne yaptığını ve yapmadığını öğrenmek için el kitabına bakın (örneğin sabit bağlantıları korumaz).
Klasör yeniden adlandırıldıktan sonra, varolan yordamların (klasörü kullanan programlar ve kullanıcılar, yedeklemeler vb.) Ad değişikliğinin farkında olduğundan emin olmanız gerekir.
mv
sadece bir rename
sistem çağrısı yapmayı beklemesi riski vardır , ancak koşullar nedeniyle kişi dosyaları kopyalayıp orijinali silecektir. Sadece bir rename
sistem çağrısı yapıldığından ve mv
arkamdan "zekice" bir şey yapmayacağımdan emin olmam gerekirse bir Python kabuğu açıp kullanıyorum os.rename
.
mkdir /BD_FILES && mount -M /data /BD_FILES && rmdir /data
rsync
yeniden başlatılabilir olmasıdır.
rsync -a
neredeyse tüm meta verileri korur, ancak sabit bağlantıları, ACL'leri veya genişletilmiş özellikleri (buna ekleyin -HAX
) korumaz .
rename
farklı davranışları olan farklı komutları vardır. Bunun rename
ne yapacağından emin olmak istediğinizde komutu kullanmamak için yeterli bir sebep olduğunu düşünüyorum .
Dizindeki her dosyayı yeniden adlandırmıyorsunuz , / içindeki bir dosyayı yeniden adlandırıyorsunuz . O yüzden:
Bu nedenle, kaç dosya veya ne kadar veri olursa olsun bir dizini yeniden adlandırmak önemsizdir.
Sadece yeniden adlandırırsanız (kaynak ve hedef aynı dosya sisteminde), bu sadece bir dizin girişinin yeniden adlandırılmasıdır. Başarılı olur ve dizinin yeni adı vardır veya başarısız olur, bu durumda hiçbir şey değişmez * .
Kaynak ve hedef farklı dosya sistemlerinde ise verilerin kopyalanması gerekir mv
. Maksimum dosya boyutu, dosya adlarındaki sınırlamalar vb. Gibi dosya sistemi özelliklerindeki farklılıklar sorunlara neden olabilir. Sorunlardan kaçınmak için önce dosyaları kopyalayın ( cp
,, rsync
…) ve kopya başarıyla tamamlandıktan sonra, dosyaları orijinal konumundaki kaldırın.
* Ancak bazı köşe vakaları vardır, örneğin adam 2 yeniden adlandırmada HATA bölümünde
Diğerlerinin söylediği gibi, bir klasörü yeniden adlandırmak içerik için doğal bir risk oluşturmaz. Ancak dikkate almak isteyebileceğiniz farklı bir risk türü vardır.
Orijinal konuma başvuran mevcut yordamlar, komut dosyaları, kullanıcı tanımlı kısayollar ve yapılandırmalar bu değişiklikten dolayı bozulabilir ve örneğin yollar bir veritabanında depolanıyorsa, bunları güncellemek büyük bir iş olabilir.
Yapabileceğiniz bir şey, yeni dizin adı için sembolik bir bağlantı yapmaktır, ancak eski adı bir süre yerinde bırakın. Bu size bu değişikliğin etkisini değerlendirmek için zaman verecektir. Eski adı geçici olarak kaldırabilir, herhangi bir sorun olup olmadığını görebilir ve varsa, güncellenmesi gerekenleri anlarken insanların çalışmaya devam edebilmesi için eski adı yeniden oluşturabilirsiniz.
Bir komut böyle bir şeyi yapmalıdır:
ln -s /data /BD_FILES
mv thing1 thing2 ; ln --symbolic ./thing2 thing1
. Bu şekilde yeni adı aldım ve symlink'i silerek eskisinin yokluğunu kolayca test edebilirim.
Yeniden adlandırma atomiktir. Tek makul risk, mv
her şeyi bir nedenden dolayı kopyalamaya karar vermesi ve bunun yarısına kadar çökmesidir. GNU'nuz varsa mv
, mv -T
bu riski ortadan kaldırır.
mv -T
mv
bir klasöre taşınmadığını söyler ; bu da bunu yapmayı reddetmesine mkdir()
neden olur ve bu da bir klasörü taşıdığında başarısız olmasına neden olur ve bir nedenle kopyalamaya karar verir.
mv -T
Yıllar önce yüksek lisans tezim üzerinde çalışırken hataları sallamaktaydım . Çok fazla kenar durumunda yanlış şeyi yapardı.
Öte yandan, kök bölümünde 180 GB kullanıcı verileriniz var. Muhtemelen bunu kök bölümünün dışına taşımak istiyorsunuz.
mv
ile-i
seçeneği.