Bir Klasördeki Dosyaları Linux Terminalinde Başka Bir Klasöre Nasıl Kopyalayabilirim

How Can I Copy Files Folder Into Another Folder Linux Terminal



Bir dizinin içeriğini diğerine kopyalamaya ihtiyaç duyduğunuzda, Linux söz konusu olduğunda, emrinizde birçok araç vardır. Hangisini kullanmalı? Duruma ve kişisel tercihe bağlıdır. Bu makalede, dosya içeriğini terminalde bir klasörden diğerine kopyalamanın yollarına bakacağız. Farklı durumlar için popüler seçeneklerden bazılarını içerecek.

Terminalde dosya kopyalama

Bir dizinin içeriğini diğerine kopyalamak çok basit bir iştir. Ancak, bunu yapmak için birçok seçeneğiniz var. Linux, çeşitli eylemler yoluyla dosya ve dizinleri değiştirmek için sayısız araçla kutsanmıştır.







Tüm adımlar Ubuntu 18.04.1'de gösterilmiştir. İlk başta, çalışmak için bir avuç boş dosya oluşturalım.



$mkdir -vdir_A



Şimdi, dokunmayı kullanarak sahte dosyaları oluşturalım.





$dokunmakukla{1..10}

Bir avuç boş dosya ile dir_A içinde başka bir klasör oluşturalım.



$mkdir -vdir_B
$dokunmakukla{1..10}

Şimdi, dir_A dizininin tüm yapısı şöyle görünür.

$ağaçdir_A

Cp Komutu

NS cp komut, dosyaları kopyalamak için açık ara en yaygın araçtır. Herhangi bir Linux sistemiyle varsayılan olarak gelen bir araçtır. Dosyaları ve dizinleri kopyalamak cp'nin tek amacıdır. Çok çeşitli özellikleri destekler.

Bu yapının temel cp emretmek.

$cp <seçenekler> <kaynak> <hedef>

Örneğin, bir kopyasını yapalım kukla1 isimli dosya kukla1_kopya .

$cpkukla1 kukla1_kopya

Şimdi birden fazla dosyayı aynı anda kopyalamayı deneyelim. Böyle bir işlem için cp, hedefin bir dizin olmasını gerektirir. Burada, tüm bilgileri almak için joker karakter ifadesini kullanacağım. kukla dosyalarına koyun ve ~/İndirilenler dizin.

$cpkukla*~/İndirilenler

Bir dizini kopyalamaya ne dersiniz?

$cp -vrdir_A dir_A_copy

Burada iki farklı bayrak kullandık. Bunların hızlı bir dökümünü yapalım.

  • -r: a için duruyor özyinelemeli kopyalayın (gizli dosya(lar) dahil). Kopyalama bir dizinin tamamını veya daha fazlasını içeriyorsa, bayrak olmalıdır.
  • -v: ayrıntılı . cp aracı, gerçekleştirdiği her işlemin çıktısını verir.

Sembolik bağlantıları takip etmek ister misiniz? -L bayrağını ekleyin.

$cp -Lvr <kaynak> <hedef>

Diyelim ki hedef dizinde zaten aynı ada sahip bir dosya var. Üzerine yazmaktan kaçınmak istiyorsanız, -n bayrağını kullanın. Çakışma durumunda cp'nin dosyanın üzerine yazmamasını sağlar.

$cp -nv <kaynak> <hedef>

Hassas bir kopyala/yapıştır işlemi yapıyorsanız, ne olduğu üzerinde en iyi kontrole sahip olmak daha iyidir, değil mi? Böyle bir durumda -i bayrağını kullanın. Cp'nin her çakışma olduğunda onay isteyeceği etkileşimli bir modu temsil eder.

$cp -ben <kaynak> <hedef>

Daha fazla ilgileniyorsanız, kılavuz sayfası her zaman en iyi belgelerden biridir. cp hakkında daha fazla bilgi edinin.

$adam cp

mv komutu

mv aracı, cp aracına benzer. Ancak, kopyalamak yerine mv, dosyaları ve dizinleri taşır. cp ile karşılaştırıldığında, daha basit.

mv'nin komut yapısı cp'ye benzer.

$mv <seçenek> <kaynak> <hedef>

içeriğini taşımak için dir_A ile dir_A_copy , aşağıdaki komutu çalıştırın.

$mv -vdir_A/dir_A_copy

Burada, -v bayrağı ayrıntılı modu. Yalnızca dir_A içeriğini taşımak istiyorsanız, bunun yerine aşağıdakini kullanın. Bu durumda, hedef dizin önceden mevcut olmalıdır.

$mv -vdir_A/ *dir_A_copy

Mv aracının çalışacak çok şeyi yok. Mevcut tüm seçenekler için man sayfasına bakın.

$adam mv

Rsync Komutu

Bu, çoğunlukla yedekleme için kullanılan dosya kopyalama için en popüler ve güçlü araçlardan biridir. Uzak bir bağlantı üzerinden dosya kopyalama yeteneğine sahiptir. cp ve mv'den farklı olarak, davranışının en üst düzeyde özelleştirilmesini sunan bir dizi gelişmiş dosya kopyalama seçeneğiyle birlikte gelir.

Rsync, çoğunlukla, değiştirilmesi gereken veri miktarını önemli ölçüde azaltan delta aktarım algoritmasıyla ünlüdür. Uzaktan senkronizasyon durumunda, bu çok fazla bant genişliği tasarrufu sağlar.

Rsync, genellikle herhangi bir Linux dağıtımında önceden yüklenmiş olarak gelmez. Ancak, popülaritesi nedeniyle artık tüm büyük Linux dağıtımlarında mevcuttur. Kullanmak Pkgs.org dağıtımınız için rsync paketini bulmak için. rsync'in kurulu olduğunu varsayarak başlayalım.

İlk olarak, rsync'in temel komut yapısı. cp'ye oldukça benzer.

$rsync<seçenekler> <kaynak> <hedef>

Başlamadan önce, burada birkaç popüler rsync argümanı var.

  • -v : Ayrıntılı mod, konsol ekranında gerçekleştirilen her türlü işlemin çıktısını verir.
  • -vv : Daha fazla ayrıntı içeren ayrıntılı mod
  • -r : Özyinelemeli mod, dizinler kopyalanıyorsa mevcut olmalıdır
  • -İle birlikte : Verileri sıkıştır
  • -ile : Verileri arşivle
  • -n : Kuru çalışma, ayrıntılı mod ile birlikte çalıştırılmalıdır. Komut gerçek olarak çalıştırılacaksa, eylemlerin çıktısını verir
  • -silmek : Kaynak dizin artık içermiyorsa, hedef dizindeki dosyaları ve dizinleri silin
  • -no-bütün-dosya : Ne olursa olsun rsync'i delta iletim algoritmasını kullanmaya zorlar. En az miktarda veri yazmayı sağlamanız gereken senaryolarda kullanışlıdır.
  • –kaldır-kaynak-dosya : Kopyaladıktan sonra kaynak dosya(lar)ı silin.

Onları eylemde kontrol edelim. İlk olarak, dizin kopyası. Aşağıdaki komutu çalıştırın.

$rsync-vrdir_A/dir_A_copy

Daha ayrıntılı çıktı için -vv bayrağını kullanalım.

$rsync-vv -rdir_A/dir_A_copy

Şimdi, rsync'in havalı kısmına bir göz atalım. rsync'in yalnızca değiştirilen dosyaları nasıl akıllıca kopyalayarak bant genişliği ve disk yazma tasarrufundan tasarruf ettiğini tartıştık. Eylemde kontrol etme zamanı. Bu örnekte, eylem, içinde gerçekleştirilecektir. dir_A dizin.

$rsync-vv --no-tüm-dosyakukla*dir_B/

Delta iletiminin etkin olmasına rağmen, yerel veri aktarımı gerçekleştirirken rsync bunu uygulamayabilir.

Şimdi kuru çalışma özelliğini kontrol edelim. Herhangi bir rsync komutunu gerçek anlamda çalıştırmadan önce, önceden test etmeniz her zaman önemlidir. Kuru çalıştırmanın devreye girdiği yer burasıdır. Rsync, komut gerçekten çalıştırılırsa ne olacağını çıkaracaktır.

$rsync-anvrdir_A/dir_A_copy

Rsync, uzak dizinlerle de çalışabilir, sorun değil. Tek ihtiyacı, yapılandırılmış SSH anahtarları ile uygun bir SSH bağlantısıdır.

$ rsync<seçenek> <local_dir>
<Kullanıcı adı> @<remote_host>:<hedef_dir>

Bir taşıma işlemi yapmak ister misiniz? Bunu rsync'in bakış açısına göre koymak için, rsync kaynak dizinin içeriğini kopyalayacak ve ardından kaynak içeriği silecektir.

$rsync-v --remove-source-files <kaynak> <hedef>

İşlemin sonucunu kontrol edin.

$ağaçdir_A

$ağaçdir_A_copy

Son düşünceler

cp ve rsync, Linux terminalindeki bir klasördeki dosyaları kopyalamak için kullanabileceğiniz en yaygın araçlardır. Her ikisi de komut dosyası yazmak için gerçekten iyidir. Uygulamadan önce işlevleri test ettiğinizden emin olun.

Eğlence!