2010-12-15 15:45:40 +0000 2010-12-15 15:45:40 +0000
81
81

Скопировать каталог на Unix

Как скопировать структуру каталогов, dir1, в dir2, (со всеми подкаталогами) на Unix, используя окно терминала?

Ответы (3)

117
117
117
2010-12-15 15:49:02 +0000
cp -rf /source/path/ /destination/path/

-r = рекурсивный, копирует все подкаталоги

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

Заметка Вы должны быть осторожны при использовании флага -f, так как он принудительно перезапишет все, в что вы копируете. Спасибо @Nifle за это предложение.

Вы можете использовать подстановочный символ *, чтобы скопировать все файлы в каталоге, если вам это нужно.

11
11
11
2010-12-15 16:07:16 +0000

В то время как ответы cp -R верны (BTW случай флага на BSD должен быть заглавным, оба поддерживаются на linux), есть старое заклинание с tar :

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

Почему, черт возьми, вы это сделали? Потому что tar имеет довольно сложное понимание ссылок как жестких, так и символических.

Вы хотите скопировать, чтобы заменить существующие символические ссылки на те, которые имеют один и тот же текст? Или ссылками на одну и ту же цель (корректируя относительные пути для компенсации)? Или побитовой копией цели?

Если два файла в оригинале жестко связаны между собой, должна ли новая структура иметь две копии данных или только одну?

Решения, решения. Tar имеет разумные значения по умолчанию, но давайте будем очень конкретны.

9
9
9
2010-12-15 19:54:18 +0000

Мне нравится

cp -axv source dest

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

rsync -va source dest