Скопіюйте каталог в Unix


78

Як можна скопіювати структуру каталогів, dir1, в dir2 (з усіма підкаталогами) в Unix за допомогою вікна терміналу?


2
"cp -r / dir1 / dir2" Це правильно ??
Дінеш Кумар

Так, це правильно. Ви можете позначати одну з відповідей як своє рішення.
qroberts

Відповіді:


115
cp -rf /source/path/ /destination/path/

-r = рекурсивна, копіює всі підкаталоги

-f = примусово, якщо існуючий файл призначення неможливо відкрити, видаліть його та спробуйте ще раз

Примітка. Будьте обережні, використовуючи -fпрапор, оскільки він насильно перепише все, що ви копіюєте. Дякую @Nifle за цю пропозицію.

Ви можете скористатися символом *, щоб скопіювати всі файли в каталозі, якщо потрібно.


11
Я не згоден, що вам слід використовувати fпрапор. -f if an existing destination file cannot be opened, remove it and try again
Ніфле

Особисто я завжди використовую прапор -f. Це не найкраща практика, тому, можливо, ви праві.
qroberts

Якщо ви знаєте, що це робить, і ви знаєте, що ви робите, це нормально. Але в цьому випадку з недосвідченим користувачем це може не підходити.
Ніфле

@Nifle Так, я розумію, що ти кажеш. Тільки що, якщо він змусить це, шанси на його роботу краще, ніж якби він цього не зробив. Все залежить від того, що ви робите, і від того, що ви розумієте, що це робить.
qroberts

Якщо ви помітите у своїй відповіді примітку про те, що -fпрапор корисний, якщо ви копіюєте <source> over <dest> (як при перезаписі речей у <dest>), я сам підняв його і видалю свою відповідь)
Nifle

11

Хоча cp -Rвідповіді вірні (BTW справа прапора на BSD має бути великою літерою, обидва підтримуються на Linux), є стара заклик, пов’язаний з tar :

$ tar cf - . | (cd DIR; tar xf - )

Чому б ти це зробив? Оскільки дьоготь має досить складне розуміння зв’язків як жорстких, так і символічних.

Ви хочете, щоб ви скопіювали для заміни існуючих символічних посилань той, який має той самий текст? Або з посиланнями на ту саму ціль (коригування відносних шляхів для компенсації)? Або з побітними копіями цілі?

Якщо два файли в оригіналі жорстко пов'язані, чи повинна нова структура мати дві копії даних або лише одну?

Рішення, рішення. Дьоготь має розумні значення за замовчуванням, але дозволяє вам бути дуже конкретними щодо цього.


9

мені подобається

cp -axv source dest

Rsync - ще один хороший інструмент для цього

rsync -va source dest
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.