Как я могу скопировать структуру каталогов, 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> поверх <dest> (как при перезаписи вещей в <dest>), я сам добавлю голос и удалю свой ответ)
Хотя cp -R
ответы правильные (кстати, флаг BSD должен быть заглавным, оба поддерживаются в Linux), существует старое заклинание с использованием tar :
$ tar cf - . | (cd DIR; tar xf - )
Какого черта ты это сделал? Потому что у tar довольно сложное понимание ссылок, как жестких, так и символических.
Вы хотите, чтобы вы заменили существующие символьные ссылки копией с тем же текстом? Или со ссылками на одну и ту же цель (корректировка относительных путей для компенсации)? Или с побитовыми копиями цели?
Если два файла в оригинале жестко связаны, должна ли новая структура иметь две копии данных или только одну?
Решения, решения. Tar имеет разумные значения по умолчанию, но позволяет вам быть очень точным в этом.
мне нравится
cp -axv source dest
Rsync - еще один хороший инструмент для этого
rsync -va source dest