Terminal penceresini kullanarak Unix üzerindeki bir dizin yapısını, dir1'i, dir2'ye (tüm alt dizinlerle) nasıl kopyalayabilirim?
Terminal penceresini kullanarak Unix üzerindeki bir dizin yapısını, dir1'i, dir2'ye (tüm alt dizinlerle) nasıl kopyalayabilirim?
Yanıtlar:
cp -rf /source/path/ /destination/path/
-r
= özyinelemeli, tüm alt dizinleri kopyalar
-f
= Zorla, eğer mevcut bir hedef dosya açılamıyorsa, onu kaldır ve tekrar dene
Not-f
Bayrağı kullanırken dikkatli olmalısınız çünkü kopyaladığınız her şeyin üzerine zorla yazacaktır. Bu öneri için @Nifle teşekkür ederiz.
Gerekirse, dizindeki tüm dosyaları kopyalamak için * joker karakterini kullanmak isteyebilirsiniz.
f
Bayrağı kullanmanız gerektiği konusunda hemfikir değilim . -f if an existing destination file cannot be opened, remove it and try again
-f
<dest> üzerine <source> (<dest> içindeki şeylerin üzerine yazıldığı gibi) kopyalıyorsanız , bayrağın yararlı olduğuna ilişkin cevabınıza bir not koyarsanız (kendimden fazlasını atacağım ve cevabımı sileceğim)
cp -R
Cevaplar doğru olsa da (BTW BSD'deki bayrağın durumu büyük olmalı, her ikisi de linux'da desteklenmeli), katran içeren eski bir teşvik vardır :
$ tar cf - . | (cd DIR; tar xf - )
Neden bunu halt ediyorsun? Çünkü katran, hem sert hem de sembolik olan bağlantıların oldukça karmaşık bir anlayışına sahiptir .
Mevcut sembolik bağları aynı metne sahip bir taneyle değiştirmek için kopyalamanızı ister misiniz? Veya aynı hedefe olan bağlantılarla (telafi edilecek göreli yolları ayarlama)? Veya hedefin bitsel kopyaları ile?
Orijinaldeki iki dosya birbirine bağlıysa, yeni yapıda verilerin iki kopyası mı olmalı yoksa bir tane mi?
Kararlar kararlar. Tar'ın mantıklı varsayılanları var, ancak bu konuda çok spesifik olmanızı sağlar.
severim
cp -axv source dest
Rsync bunun için başka bir iyi araçtır
rsync -va source dest