mv: Dizin boş değil

124

Başka bir dizindeki bir dizinin içeriğini aynı klasörlerle taşımak istiyorum.

İşte bir örnek:

./backup dizinim base ve test değerine sahip. Şimdi bu dizinleri ./backupArchives dizininde taşımak istiyorum.

Bunu kullanıyorum:

mv ./backup/* ./backupArchives

ancak hatayı aldım

mv: cannot move './backup/base' to './backupsArchive/base': Directory not empty

--force kullanmayı denedim, ancak şans yok. Klasörler var olduğunda onu taşımak için bir yolu var mı?

Not: Sadece içerikleri birleştirmek istiyorum, üzerine yazma yok.

    
sordu UdK 19.03.2013 05:11

5 cevap

159

Adam sayfası bunu belgelemese de,% dizin_dosyası, dizin dizin dosyaları içeriyorsa dizini başka bir dizine yeniden adlandırmayı reddeder. Bu, sizin durumunuzda iyi bir şeydir çünkü kaynağın içeriğini hedefe birleştirme yapmak istediğinizde, mv 'nin yapmaması gerekir.

Bunun yerine mv kullanın. Bundan sonra rsync -a backup/ backupArchives/ .

rm -rf backup/* kullanmak yerine, klasik de yapabilirsiniz

(cd backup && tar c .) | (cd backupArchives && tar xf -)

size daha fazla inek puanı kazandırır.

    
verilen cevap zwets 19.03.2013 08:51
24

Ne yaptığınızı biliyorsanız, hızlı ve kirli:

cp -r ./backup/* ./backupArchives && rm -R ./backup/*
    
verilen cevap patrickvacek 10.10.2013 18:07
3

Taşıdığınız dizinin ardından * (herhangi bir metni veya sayıyı gösterir) gerekir. Örneğin:

mv /var/www/* /recovery/wwwrecovery/

hepsi, dosyaları taşıyorsanız, aşağıdakileri taşıdığınızdan daha fazla:

mv /var/www/index.php /recovery/index.php

Başka bir yol, bu klasör içeriğini tar kullanarak paketlemektir:

tar -cvzpf backup.tar.gz /var/www 

Ardından başka bir dosyada bulun. Ayrıca bu adımı öneririm çünkü kat onu sıkıştırır ve boyutlarını küçültür.

Dosyaları başka bir klasöre çıkarmak için

kullanın
tar -xvzpf /var/www/

Sahip olmadığınız bir konuma kopyalamanız gerekiyorsa, kullanmaya karar verdiğiniz seçenekten sonra komutunuzu sudo komutuyla başlattığınızdan emin olun.

sudo tar -cvzpf backup.tar.gz /var/www/
    
verilen cevap Dimitris Theodoridis 19.03.2013 05:27
3

rsync emin çalışır, ancak bu rsync 'yi desteklemeyen makine için de kullanılabilir (örn. cpanel'de, rsync varsayılan olarak yüklenmemiş).

Kullanmaya ne dersiniz:

cd /path/to/backup/ && cp -R --parents ./* ../backupArchives

Ardından, gerekirse backup dizinini kaldırın

Not1: cd 'yı yürütmeden önce backup dizinine cp -R --parents ... dizinini vermeniz gerekiyor

Not2: Yeni dosyaları yedeklemeden aldıysanız backupArchives dizinini iki kez kontrol edin.

    
verilen cevap Atillo Regner Rex 03.03.2017 08:45
1

Soruyu sormadan önce, basitleştirilmiş bir durumu ele alalım.

/ home / admin dizininde, aynı alt dizin yapısına sahip, foo ve bar adlı iki klasörümüz var, ancak her birinde farklı dosyalar var. Şimdi onları bir araya getirmek istiyoruz. % Co_de% gibi şeyler yaptığımızda mv foo/* bar hatası oluşur.

Benim çözümüm, komut satırı araçlarını bırakmak ve bir GUI dosya yöneticisine (örneğin, yunus) geçmek. % Co_de% 'yi mv: directory not empty ' ye yunus olarak yeniden adlandırdığınızda, size hedef klasöre yazma seçeneği sunar ve varolan dosyaların üzerine yazıp yazmamayı sorar. Bu, zamanınızı tek bir kod satırı olmadan kaydeden kopyalama ve silme işlemlerini engeller.

PS: Her dosya yöneticisini orada test etmedim. Ama çoğunun bu özelliği olmalı.

    
verilen cevap navigaid 12.10.2016 11:22

Etiketlerdeki diğer soruları oku