Bir dizini ve içeriğini yeni bir dizin adı altında yeni bir yere nasıl kopyalarsınız?


52

Linux komut satırında yeniyim ve şu anda copy komutunu kullanmaya çalışıyorum.

Alt dizinleri ve ilişkili dosyaları olan bir dizini yeni bir isimle yeni bir dizine kopyalamanın mümkün olup olmadığını lütfen söyleyebilir mi, örneğin directory_backup?

Her türlü yardım için şimdiden teşekkür ederiz

Yanıtlar:


69

Kullanılacak -r(yinelemeli kopya) ve yeni ad belirtin

cp -r /path/to/directory /path/to/location/new-name

örnek kopyalamak için ... gerçek yolları ile değiştirin stuffBir benim ev dizinden mevcut dizinde backupve yeni bir dizin adını stuff-backup(not bu dizin zaten varsa stuffkopyalanır içine o, bunu üzerine değil).

cp -r ~/stuff ~/backup/stuff-backup

~Ana dizininiz için /home/$USERveya /home/zannabenim durumumda kısayol . Geçerli çalışma dizini ana dizininiz ise, bu bilgiyi reddedebilirsiniz.

zanna@monster:~$
              ^--the ~ here is where I am - home!

Gerçekleştirilen her kopyayı raporlamak için -vayrıntılı bayrağı ekleyebilirsiniz cp...

$ cp -vr stuff backup/stuff-backup
'stuff/thing1' -> 'backup/stuff-backup/thing1'
'stuff/thing2' -> 'backup/stuff-backup/thing2
...

Üzgünüm Zanna. Tavsiyenizi uygulamaya koyacağım ve nasıl gittiğime bakacağım. Ayrıntılı bayrak fikri gibi. Diğer komutlar çalışırken bu da bir rapor olarak çalışacağını varsayalım .. Şerefe.
Edmuntu

@Edmuntu ne için üzgünüm? Evet, birçok komutun bir bayrağı -vveya --verbosebayrağı var :)
Zanna

ilk kısa "teşekkür ederim" için özür dilerim .... yanlışlıkla dönüş tuşuna basın.
Edmuntu

10

İhtiyacınız olan komut basitçe cp"kopya" anlamına gelir.

Örneğin, bu sözdizimlerinden biriyle kullanabilirsiniz:

cp SOURCEFILE TARGETFILE
cp SOURCEFILE TARGETDIRECTORY

İlk değişken, hedef dosya için yeni bir dosya adı belirlemenize izin verirken, ikinci değişken ise hedef dizinde aynı isimde bir kopya oluşturur. Elbette yer sahiplerini ilk önce geçerli harflerle büyük harflerle değiştirmelisiniz.

Ancak, cpvarsayılan olarak dizinlerde değil yalnızca dosyalarda çalışır. Tam bir dizini tüm içeriği tekrarlı olarak kopyalamasını sağlamak için, -rseçeneği eklemelisiniz :

cp -r SOURCEDIRECTORY TARGETDIRECTORY

Terminal hakkında cpyazarak komut hakkında daha fazla bilgi edinebilirsiniz man cp.


Bu yorum bölümünde kullanılmayan Bayt Komutanı ... satırını değiştirmeye devam etmek yerine isabet etmeye devam et. Cevabınızda çok net bir taslak. Kullanılabilir araçların doğru kullanımı konusunda iyi talimatlar aldığım için şimdi bu dizinleri ayırmayı bekliyoruz. Mükemmel.
Edmuntu

@Edmuntu Gelecekte, bir satır aşağı gitmek için yorum yaparken ÜSTKRKT + ENTER tuşlarını kullanın.
The

@OwenHines Sadece yorumlar satır çizgisini ve ek boşlukları kaldırır ve editörde olmasını sağlamak sonuçtaki hiçbir şeyi değiştirmez.
Byte Commander

@ByteCommander Oh doğru, boşver. Şimdi biliyor.
Kasım’da

6

Genel olarak yararlı cp komutuna bir alternatif olarak, orijinal dizin yapısının izinlerini / zaman damgalarını çoğaltma avantajına sahip olan rsync kullanabilirsiniz:

rsync -av dir/ newdir

-a bir arşiv -v ayrıntılı

kaynak dizinden sonraki eğik çizgiyi not edin.


5

İlkinden kopyaladığım dizine geçmeyi daha kolay buluyorum. Bu örnek için herkesin aradığı bir dizine gidin /boot. Herkes aşağıdaki komutları kopyalayıp Terminallerine yapıştırabilir.

cd /boot
sudo mkdir /boot_backup
sudo cp -r . /boot_backup
du /boot_backup -h

752K    /boot_backup/extlinux/themes/debian-wheezy
756K    /boot_backup/extlinux/themes
832K    /boot_backup/extlinux
2.5M    /boot_backup/grub/i386-pc
20K     /boot_backup/grub/locale
2.3M    /boot_backup/grub/fonts
7.2M    /boot_backup/grub
565M    /boot_backup

For cpkomutu geçerli dizin olarak tanımlanır .olan /bootbiz değiştirildi dizin. -rSeçenek tüm alt dizinleri dahil etmek özyinelemeli yapar.

Bu durumda du, yeni dizindeki tüm alt dizinleri ve toplam dosya boyutlarını listelemek için çalışılmasını sağlamak /boot_backup.

Bu gözden geçirmeyi tamamladıktan sonra sudo rm -r /boot_backup, yeni dizini ve alt dizinlerini kaldırmak için : kullanın.


1
Bu, tüm dosyalarınızı geçerli dizinizden başka bir dizine nasıl kopyalayacağınızı açıklasa da, OP'lerin bir dizini (ve içeriğini) farklı bir isim dizinine nasıl kopyalayacağına dair soruyu tam olarak cevaplamıyor. cp -rYeni bir dizin oluşturmaya ve tüm dosyaları içine kopyalamaya özen gösterecek daha kısa komutlar (örneğin ) vardır
BlueCacti

1
Nasıl kopyalanacağını ve yönlendirileceğini ve içeriğini açıklar - fark, ilk olarak önleyici bir alışkanlık olarak kaynak dizine değişmesidir. cp -rönerdiğiniz gibi zaten üçüncü komut satırında. Öğretici, herkesin bir /bootdizine sahip olması ve bunu kendi makinelerinde deneyebilmesi gerçeğine dayanmaktadır . Kullandığım Had cp -r /home/GroundZero/Documents /home/GroundZero/Documents_backuponlar değişiklik olurdu - okuyucuların kopyalayıp kendi terminale yapıştırabilirsiniz olamazdı GroundZerohata için daha çok çaba ve şansını yaratır. Umarım bu yanıtın KISS'ini gömülü bir öğretici ile takdir edersiniz.
WinEunuuchs2Unix

1
cd ~/Documents/SomeObsucreFolder/2016/Nov/Geçerli dizini kaynak dizin olarak ayarlamak için @GroundZero , doğru şekilde yazıldığından emin olmak için Terminal istemini değiştirir ve kaynak olarak kullanıldığında kaynak dizininin yeniden yazılmasını engeller cp -r .. Basitçe iyi bir alışkanlık olarak düşündüğüm şey. Ayrıca bir kez kaynak dizinine değişen bunu yapmak çok kolaydır ls FIleName1, ls FileName2kaynak dizin adını tekrarlamak zorunda kalmadan sen yedekleme orada istediğiniz dosyaları esnure için vs. lskomuta.
WinEunuuchs2Unix

5

Dizini bir yerden başka bir alt dizine kopyalamak için aşağıdaki komutu kullanabilirsiniz.

cp -Rvp /home/edmuntu/data /home/edmuntu/mydata/

Komutun açıklaması:

  • -R = dizinleri art arda kopyala
  • v = ne yapıldığını açıkla
  • p = İzni ve mülkiyeti zaman damgaları ile korumanıza yardımcı olacak

Teşekkürler @Rakesh Chauhan. "İzni ve sahipliğini zaman damgalarıyla koru" ??? Vay .... Bunu almam gerek !! Satır komutlarının yine bir başka yönü keşfedilecek. Cevabın için teşekkürler.
Edmuntu

4

cpAradığınız işlevi yapan komuttur. Bu kopya anlamına gelir ve sadece bunu yapar. Bu durumda sizin için işe yarayacak olan komut şudur:

cp -R source/ destination/

Bu, source/klasörü ve tüm alt dizinlerini kopyalar destination/.

Eğer destination/yoksa, yaratılacaktır.

-RBayrak söyler özyinelemeli, açılımı cptüm alt dizinleri kopyalamak için.


Teşekkürler @ Owen Hines. Böyle Ses kesinlikle benim task.Cheers için komut
Edmuntu

1
@Edmuntu Sorununuza çözüm bulduysanız, altındaki onay işaretini tıklayarak sizin için doğru olan cevabı işaretleyebilir misiniz? Bu, çözülen sorunun sayfasını görüntüleyen diğerlerini uyarmaya yardımcı olacaktır.
Kasım’daki The Oddd

1

Genellikle, yeni bir varsayılan oluşturma izinleri kümesini değil, bir kopya oluştururken dosya izinlerini aynı tutmak istiyorsunuz. Bu cp için -a bayrağı kullan demek.

cp -a file filenew
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.