büyük bir klasörü yeniden adlandırmak: riskli mi?


19

180GB ile klasörü yeniden adlandırmak riskli mvmi?

Biz bir klasör var /data180GB içerir.

Biz adlandırmak istediğiniz /dataklasörü /BD_FILESile mvkomuta.

Bunu yapmak güvenli mi?


14
Neden ve nasıl riskli olmalı? Emin değilseniz, çağrı mvile -iseçeneği.
tatlı

5
Ortamınızda riskli olabileceğini düşünmenize neden olan bir şey var mı?
Jeff Schaller

2
Hareketin kendi başına bir soruna neden olma riski olup olmadığı veya sorunlu etkiler olma riski olup olmadığı anlamına mı geliyorsunuz? / Data klasörü olmasını bekleyen programlarınız varsa, yeniden adlandırmak sorunlara neden olabilir.
Birikim

3
Yan not: Yedekleri doğruladıysanız hemen hemen her şey güvenlidir. Hiçbir şey olması gerektiği kadar güvenli değildir. Başka bir deyişle: "güvenli midir" diye sorulduğunda, ilk düşünceniz "yedeklerimi doğruladım mı?" Olmalıdır.
RedGrittyBrick

2
Demek istediğim, bu işletim sisteminin verileriyle büyük bir klasörü taşırken sorunlu olabilecek bir risk, örneğin ortadaki veya gevşek verilerdeki hareketi durdurabilir
yael

Yanıtlar:


71

Aynı dosya sisteminde kalıyorsa, bir klasördeki adın değiştirilmesi güvenlidir.


Eğer bir bağlanma noktasıysa ( /databana 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_FILESverileri kök bölüme taşıyacaktır (bu ne olmayabilir) olmasını istersiniz).

Dosya sistemini çıkarmalı, şimdi boş dizini yeniden adlandırmalı, /etc/fstabbu 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,

  1. umount /data
  2. mv /data /BD_FILES( /BD_FILESvar olmadığı varsayılırsa , bu durumda, önce yoldan çıkarın)
  3. güncelleme /etc/fstab, bağlama noktasını olarak /datadeğiştir/BD_FILES
  4. 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 /databir 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 rsyncne 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.


9
Kişinin mvsadece bir renamesistem çağrısı yapmayı beklemesi riski vardır , ancak koşullar nedeniyle kişi dosyaları kopyalayıp orijinali silecektir. Sadece bir renamesistem çağrısı yapıldığından ve mvarkamdan "zekice" bir şey yapmayacağımdan emin olmam gerekirse bir Python kabuğu açıp kullanıyorum os.rename.
kasperd

3
Nispeten yeni bir Linux çekirdeği ile bunun yerine bağlama noktasını taşıyabilirsiniz:mkdir /BD_FILES && mount -M /data /BD_FILES && rmdir /data
David Foerster

2
@MichealJohnson Muhtemelen bir Linux sistemi üzerinde çalışacaktır, evet. Temiz olan şey, rsyncyeniden başlatılabilir olmasıdır.
Kusalananda

3
@MichealJohnson One, en rahat kullanılan araçları kullanıyor. Evet, rsync -aneredeyse tüm meta verileri korur, ancak sabit bağlantıları, ACL'leri veya genişletilmiş özellikleri (buna ekleyin -HAX) korumaz .
Kusalananda

3
@Max Farklı dağıtımların renamefarklı davranışları olan farklı komutları vardır. Bunun renamene yapacağından emin olmak istediğinizde komutu kullanmamak için yeterli bir sebep olduğunu düşünüyorum .
kasperd

16

Dizindeki her dosyayı yeniden adlandırmıyorsunuz , / içindeki bir dosyayı yeniden adlandırıyorsunuz . O yüzden:

  1. dizinler dosyadır ve
  2. dosya sistemi gerçek metni değil, inode'u gerçekten önemsiyor.

Bu nedenle, kaç dosya veya ne kadar veri olursa olsun bir dizini yeniden adlandırmak önemsizdir.


14

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


> "Başarılı olur ve dizinin yeni adı vardır veya başarısız olur, bu durumda hiçbir şey değişmez". Nasıl garanti edilir? Tüm dosya sistemleri için geçerli mi? Bununla ilgili herhangi bir belge var mı?
türbanoff

Yeniden adlandırma tek bir sistem çağrısıdır, ancak adam yeniden adının HATA bölümünde NFS hakkında bir not vardır : NFS kullanılırken hata döndürüldüğünde bile yeniden adlandırma başarılı olabilir ( kılavuz sayfasındaki ayrıntılara bakın). Cevaba da bir not ekledim. Çekirdek içindeki herhangi bir dosya sisteminin, bir yeniden adlandırma başarısız olması durumunda bir dizin girişi için kaybolmasını kabul etmesini beklemiyorum.
sebasth

8

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


4
Hiç kimsenin bahsetmediği daha hafif bir risk, o klasör için yedekleme stratejinize bağlı olarak, aniden görünen 180 GB "yeni" veriler nedeniyle yedekleme sürücüsünde disk alanı ve gecikme sorunlarına yol açabileceğidir. yedeklenecek.
Kent

Gibi bir şeyi tercih ederim mv thing1 thing2 ; ln --symbolic ./thing2 thing1. Bu şekilde yeni adı aldım ve symlink'i silerek eskisinin yokluğunu kolayca test edebilirim.
can-ned_food

3

Yeniden adlandırma atomiktir. Tek makul risk, mvher şeyi bir nedenden dolayı kopyalamaya karar vermesi ve bunun yarısına kadar çökmesidir. GNU'nuz varsa mv, mv -Tbu riski ortadan kaldırır.

mv -Tmvbir 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 -TYı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.


Bir şey "kök bölümünde" olup olmadığını tek başına adından söyleyemezsiniz.
Peter

@Peter: Kök bölümünde değilse bir bağlama noktasıdır. Bağlı bağlama noktalarını mv komutuyla yeniden adlandıramazsınız.
Joshua
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.