Скопировать каталог на Unix
Как скопировать структуру каталогов, dir1, в dir2, (со всеми подкаталогами) на Unix, используя окно терминала?
Как скопировать структуру каталогов, dir1, в dir2, (со всеми подкаталогами) на Unix, используя окно терминала?
cp -rf /source/path/ /destination/path/
-r
= рекурсивный, копирует все подкаталоги
-f
= принудительно, если существующий целевой файл не может быть открыт, удалите его и повторите попытку
Заметка Вы должны быть осторожны при использовании флага -f
, так как он принудительно перезапишет все, в что вы копируете. Спасибо @Nifle за это предложение.
Вы можете использовать подстановочный символ *, чтобы скопировать все файлы в каталоге, если вам это нужно.
В то время как ответы cp -R
верны (BTW случай флага на BSD должен быть заглавным, оба поддерживаются на linux), есть старое заклинание с tar :
$ tar cf - . | (cd DIR; tar xf - )
Почему, черт возьми, вы это сделали? Потому что tar имеет довольно сложное понимание ссылок как жестких, так и символических.
Вы хотите скопировать, чтобы заменить существующие символические ссылки на те, которые имеют один и тот же текст? Или ссылками на одну и ту же цель (корректируя относительные пути для компенсации)? Или побитовой копией цели?
Если два файла в оригинале жестко связаны между собой, должна ли новая структура иметь две копии данных или только одну?
Решения, решения. Tar имеет разумные значения по умолчанию, но давайте будем очень конкретны.
Мне нравится
cp -axv source dest
Rsync - еще один хороший инструмент для этого
rsync -va source dest