Kullandığımda
cp -R inputFolder outputFolder
sonuç bağlama bağımlıdır :
- yoksa
outputFolder, yaratılır ve klonlanan klasör yolu oluroutputFolder. - eğer
outputFoldervarsa, o zaman yaratılan klonoutputFolder/inputFolder
Bu korkunç , çünkü bazı kurulum betiği oluşturmak istiyorum ve eğer kullanıcı onu iki kez yanlışlıkla çalıştırırsa outputFolder, ilk kez yaratmış olacak , sonra ikinci çalıştırmada tüm şeyler bir kez daha yaratılacak outputFolder/inputFolder.
- Her zaman ilk davranışı istiyorum: orijinalin yanında (bir kardeş olarak) bir klon oluşturun.
cpTaşınabilir olmak için kullanmak istiyorum (örneğin MINGWrsyncgönderilmedi)- Kontrol ettim
cp -R --parentsama (klon olmayacak kadar tüm yol dizin ağacında yukarı bu yolu yeniden oluştururoutputFolderamasome/path/outputFolder) --remove-destinationveya--update2'nin hiçbir şeyi değiştirmemesi durumunda, yine de şeyler kopyalanır.outputFolder/inputFolder
Bunu outputFolder(eğer klasör yoksa o zaman ...) varlığını kontrol etmeden veya kullanmadan bunu yapmanın bir yolu var mı rm -rf outputFolder?
Bunu yapmanın kararlaştırılmış, taşınabilir UNIX yöntemi nedir?
rsync?
cp, iki tarkomut arasında borulama yapmak ağaç kopyalamanın iyi ve güvenilir bir yoludur.
rsyncgönderilmemiş olan çalışmasını istiyorum .
tar -C input -cf - . | tar -C output -xf -çalışır. -Cçalışma dizinini değiştirir, ancak standart bir seçenek değildir, bu nedenle desteklenmiyorsa, başlamak için doğru çalışma dizinlerinde iki katranı çalıştırmanız gerekir, örneğin ( cd input && tar -cf - . ) | ( cd output && tar -xf - )Windows ile uğraşıyorsanız, sadece roaima'nın yanıtını kullanırdım.
mvönlenir?