Як можна скопіювати структуру каталогів, dir1, в dir2 (з усіма підкаталогами) в Unix за допомогою вікна терміналу?
Як можна скопіювати структуру каталогів, dir1, в dir2 (з усіма підкаталогами) в Unix за допомогою вікна терміналу?
Відповіді:
cp -rf /source/path/ /destination/path/
-r
= рекурсивна, копіює всі підкаталоги
-f
= примусово, якщо існуючий файл призначення неможливо відкрити, видаліть його та спробуйте ще раз
Примітка. Будьте обережні, використовуючи -f
прапор, оскільки він насильно перепише все, що ви копіюєте. Дякую @Nifle за цю пропозицію.
Ви можете скористатися символом *, щоб скопіювати всі файли в каталозі, якщо потрібно.
f
прапор. -f if an existing destination file cannot be opened, remove it and try again
-f
прапор корисний, якщо ви копіюєте <source> over <dest> (як при перезаписі речей у <dest>), я сам підняв його і видалю свою відповідь)
Хоча cp -R
відповіді вірні (BTW справа прапора на BSD має бути великою літерою, обидва підтримуються на Linux), є стара заклик, пов’язаний з tar :
$ tar cf - . | (cd DIR; tar xf - )
Чому б ти це зробив? Оскільки дьоготь має досить складне розуміння зв’язків як жорстких, так і символічних.
Ви хочете, щоб ви скопіювали для заміни існуючих символічних посилань той, який має той самий текст? Або з посиланнями на ту саму ціль (коригування відносних шляхів для компенсації)? Або з побітними копіями цілі?
Якщо два файли в оригіналі жорстко пов'язані, чи повинна нова структура мати дві копії даних або лише одну?
Рішення, рішення. Дьоготь має розумні значення за замовчуванням, але дозволяє вам бути дуже конкретними щодо цього.
мені подобається
cp -axv source dest
Rsync - ще один хороший інструмент для цього
rsync -va source dest