Bir klasörün içeriğini terminal kullanarak farklı bir dizindeki başka bir klasöre nasıl kopyalayabilirim?


740

Bir klasörün içeriğini terminal kullanarak farklı bir dizindeki başka bir klasöre kopyalamaya çalışıyorum.

Biri bana bunu başarmak için gereken komut satırı sözdiziminin bir örneğini sunabilir mi?

Yanıtlar:


1115

Bir klasörün içeriğini komutla /sourcebaşka bir varolan klasöre kopyalayabilirsiniz./dest

cp -a /source/. /dest/

Bu -aseçenek, tüm dosya özniteliklerini koruyan ve aynı zamanda sembolik bağları koruyan geliştirilmiş özyinelemeli bir seçenektir.

.Kaynak yolunun sonunda bir özgüdür cp, gizli olanları dahil tüm dosya ve klasörleri kopyalamak için izin sözdizimi.


@enzotib Bu komutu "Downloads / textext" içeriğini "~ / .config / inkscape / extensions /" dizinine kopyalamak için kullanmaya çalışıyorum. Komutunuzu kullanarak "cp -a / Downloads / textext /. /~/.config/inkscape/extensions/." Yazın. ama bu işe yaramıyor
Funzies

@Funzies: muhtemelen emriniz:cp -a ~/Downloads/textext/. ~/.config/inkscape/extensions/
enzotib

-pDosya izinlerini ve zaman damgalarını koruyacak şekilde bayrak ekleyin . cp -ap /var/www/original.com/images/. /var/www/new.com/images/
Dylan Valade

3
@DylanValade: -aZaten --preserve=alldaha geniş, ima ediyor -p = --preserve=mode,ownership,timestamps.
enzotib

1
@BennyNeugebauer: scpbir ağ üzerinden (yoluyla ssh) kopyalamak için kullanılır ve hedef dosya sistemindeki dosyaları değil yalnızca iletişim kanalını şifreler.
enzotib

129

Bir alternatif rsync

rsync -r source/ destination

Rsync'in avantajları:

  1. İlk senkronizasyondan sonra, yalnızca değişen dosyaları kopyalar.

  2. Bir ağ üzerinden, $ HOME'daki dosyalar için, özellikle yapılandırma dosyaları için uygun kullanabilirsiniz.


5
Bence yıldıza ihtiyacın yok. rsync -r source/ destinationyeterli olmalı, hayır?
Joschua

1
Bu daha uygun: 'rsync -rtvp kaynak / * destination'
shridutt kothari 16:16

-r gizli dosyalar / klasörler için işe yaramaz
Nam G VU

1
Bash * sadece gizli olmayan dosyaya genişlediğinden, bu gizli dosyaları kopyalamaz. @Joschua'nın çözümü daha güvenli.
sauerburger

* Eğer / * kullanmazsanız kullanırsanız rsync, gizli dosyalar da dahil olmak üzere tüm dizini kopyalar. rync source/ destAçıkçası, insanların rsync komutunu istedikleri gibi çalışması için özelleştirmeleri gerekir.
Panter,

78

Eğer bir klasör denilen var Diyelim Folder1'ı Gözlerinde farklı ~iç, klasör1 denilen 1 dosyasıdır dosya1 denilen ve 2 klasör abon1 ve Sub2 içlerinde diğer dosya ve klasörler her biri.

Tüm içeriğini kopyalamak ~/folder1için ~/new_folder1kullanmak

cp -r ~/folder1/. ~/new_folder1

new_folder1daha sonra gelen tüm dosya ve klasörleri içerir folder1.

cpbir terminal kullanarak kopyalamak için kullanılan komut, -ryinelemeli olarak yapar (bu nedenle, geçerli dizin + akım içindeki dizinler) ~/folder1orijin klasörüdür, ~/new_folder1orijin içindeki dosyalar / klasörler için hedef klasördür.


5
Gizli dosyaları yakalamıyor
Portablejim

1
Teşekkürler Bruno! Biraz değişmek zorunda olmama rağmen sözdizimini anlamama yardımcı oldu (~ işaretini kaldırarak). Belki de hedef klasör başka bir dosya sisteminde bulunan / opt konumunda olduğundan. Ve Portablejim gizli dosya şeyini hatırlamak için teşekkür ederim!
pandisvezia,

4
Takip süresi önemlidir. Onsuz, bazen ~/new_folder1/folder1içeriği kopyalamak yerine yeni bir alt dizin oluşturabilir .
Wisbucky

1
Neden olmasıncp -r ~/folder1/* ~/new_folder1
Alex78191

@ Alex78191[root@ home]# mkdir food [root@ home]# cd food/ [root@ food]# mkdir .fruit [root@ food]# mkdir veggies [root@ food]# touch veggies/carrots [root@ food]# touch .fruit/apple [root@ food]# ls * carrots [root@ food]#
Bruno Pereira

14

Klasör kopyalama hakkında daha fazla bilgi için bu http://www.cyberciti.biz/faq/copy-folder-linux-command-line/ adresini ziyaret edin . Bu yardımcı olur umarım.

cp Command

cpdosya ve dizinleri kopyalamak için kullanılan bir Linux komutudur. Sözdizimi aşağıdaki gibidir:

cp source destination
cp dir1 dir2
cp -option  source destination
cp -option1 -option2  source destination

Bu örnekte, /home/vivek/lettersklasör ve tüm dosyalarını /usb/backupdizine kopyalayın :

cp -avr /home/vivek/letters /usb/backup

Nerede,

-a : Dizin dosya modu, sahiplik, zaman damgaları, mümkünse ek özellikler: belirtilen, bağlam, bağlantılar, xattr, tümü gibi belirtilen özellikleri koruyun.

-v : Ne yapıldığını açıklayın.

-r: Dizinleri art arda kopyalayın. Örnek

/ Tmp / conf adlı bir klasörü / tmp / backup dizinine kopyalayın:

$ cp -avr /tmp/conf/ /tmp/backup

3
Sorunun sorduğu şey bu değil.
AStopher

(-A ile -r kullanmak gereksizdir; gnu cp üzerinde -a, "-dr --preserve = all" ile
aynıdır

1
cp: -R ve -r seçenekleri birlikte belirtilmemiş olabilir.
IgorGanapolsky

4

Basit bir örnek.

Kopya dizin dir_1 ve içeriğini (_files_) dizin içine dir_2 :

cp -r ./dir_1 ./dir_2
# or
cp -r ./dir_1/ ./dir_2/
# Results in: ./dir_2/dir_1/_files_

Kopya sadece dir_1 içeriğini (_files_) dizin içine dir_2 :

cp -r ./dir_1/. ./dir_2
# or
cp -r ./dir_1/. ./dir_2/
# Results in: ./dir_2/_files_*

_files_ dizinde bulunan gerçek dosyalar için bir yer tutucudur.


2

İki klasör varsa: (yazma izniyle)

drwxr-xr-x 4 vimal vimal  4096 Sep  9 12:17 .
drwxr-xr-x 3 root  root   4096 Aug 18 14:35 ..
drwxrwxrwx 6 vimal vimal  4096 Sep  9 12:15 DATA
drwxrwxrwx 7 vimal vimal  4096 Sep  9 12:15 PORTAL

PORTAL adlı bir klasörün içindeyseniz, başka bir klasörün tüm içeriğini kopyalamak istediğinizde aynı seviyede VERİ diyorsunuz.

vimal@vimal-D3H:/var/www/html/PORTAL$ cp -a ../DATA/. .

2 nokta fark etmelisin. Son nokta, kopyayı mevcut klasörde buraya yazdığını söylüyor

ve

birini takip / DATA /. DATA klasörü içindeki tüm İÇERİKLERİNİN DATA klasörünün değil kopyalanacağını söylüyor.

Bu izini kaldırırsanız "." / DATA'dan /

daha sonra tüm DATA klasörü PORTAL içine kopyalanacaktır (başa çıkacağınız yerden).

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.