Cp -r ve cp -a arasındaki fark


174

Ben arasındaki farkı arıyorum cp -rve cp -a. "Özyinelemeli" dosyaların bir klasörden kopyalanması açısından ne anlama geliyor?


62
Bazı insanlar man sayfalarına daha iyi bir açıklama arıyor çünkü açıklamanın ne anlama geldiği her zaman net değil. Belirli bir komutla gerçekte neler olup bittiğini anlamak için birçok kez kazmak ve test etmek / denemek zorunda kaldım. grep'in man sayfası her an kafamı karıştırabilir.
Joe,

2
Hayal kırıklığınızı anlayabiliyorum, ama imo, çoğu zaman öğrenmenin en iyi yolu test etmek ve denemektir.
Ağustos'ta

37
YA DA burada sorular sorarak, cevabınızı anlayacağınız şekilde elde ederek ve neyi nasıl deneyeceğinizi ve nasıl deneyimleyeceğinizi anlama konusunda daha iyi bir anlayışa sahip olarak öğrenin. Çok sık vb vb benim için çalışmıyor sizin için çalışan unutmayın
Will Lanni

Yanıtlar:


198

Özyinelemeli cp, dizinlerin içeriğini kopyalayan anlamına gelir ve bir dizinin alt dizinleri varsa bunlar da (özyinelemeli) kopyalanır. Olmadan -R, cpkomut dizinleri atlar. Linux -rile aynıdır -R, bazı diğer unix çeşitlerinde bazı uç durumlarda farklılık gösterir.

Varsayılan cpolarak, eski dosyayla aynı içeriğe ve aynı izinlere sahip ancak umask tarafından kısıtlanan yeni bir dosya oluşturur ; Kopya, kopya zamanından itibaren tarihli ve kopyayı yapan kullanıcıya aittir. Bu -pseçenekle, kopya aynı değiştirme zamanına, aynı erişim zamanına ve orijinal ile aynı izinlere sahiptir. Ayrıca, kopyayı yapan kullanıcı bu dosyaları oluşturma iznine sahipse, orijinal ile aynı sahibi ve gruba sahiptir.

-aSeçenek demektir -Rve -partı birkaç başka koruma seçenekleri. Orijinaline mümkün olduğunca yakın bir kopya oluşturmaya çalışır: aynı dizin ağacı, aynı dosya türleri, aynı içerikler, aynı meta veriler (zamanlar, izinler, genişletilmiş özellikler, vb.).


35
Temel olarak, özel bir şey istemediğiniz sürece, asla ihtiyacınız olmaz -rçünkü -a( archive için) her zaman en güvenli ve muhtemelen ne olacağını umuyorsunuz.
08

2
@ ams Evet, bu iyi bir özet. Kullanmanın tek yaygın nedeni, -rLinux dışında bir unix değişkenine sahip -aolmanız ve genellikle kullanmamanızdır cp -rp. Veya rsync -a.
Gilles,

bazen izinler izin verir -r ama -a
DrCord

Değil -r, değil -R Ubuntu 18'de çalışmıyor
Arkady

16

"Özyinelemeli" için -r veya -R seçeneği, alt klasörlerin içindeki dosyalar da dahil olmak üzere tüm dosyaları kopyalayacağı anlamına gelir.

Listelenen -a seçeneği -dR ile aynıdır; bu, alt dizinlerin içeriğini kopyalamanın yanı sıra bağlantıları koruyacağı anlamına gelir. Bağlantıları koruyarak ne anlama geldiğini yinelemeli olarak kopyalarken bağlantıları izlemeyeceği anlamına gelir.

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.