2

Я хочу реплицировать сложную структуру каталогов с одного сервера Linux на другой удаленный сервер, начиная с определенного подкаталога.

Я не хочу, чтобы содержимое файлов, я просто хочу сохранить структуру, владельца и разрешения, так как клонируемый сервер содержит большой объем данных, которые не должны быть скопированы на новую машину.

Я предполагаю, что это можно сделать как-то, изменив структуру папок и отключив ее на удаленной машине. Или с помощью rsync для копирования без отправки данных. Или, возможно, с помощью find для создания сценария оболочки.

Если у кого-нибудь есть подкладка, которая выполняет это, я был бы признателен.

3 ответа3

2

Вы можете объединить find и cpio чтобы составить список подкаталогов из текущего рабочего каталога:

find . -type d -print | cpio -oO dirs.cpio

Чтобы восстановить эту иерархию каталогов на удаленном компьютере, скопируйте файл dirs.cpio в нужное место и запустите:

cpio -iI dirs.cpio
1

Используйте rsync для рекурсивного копирования только каталогов с исходным путем в каталог назначения:

rsync --archive --verbose --filter="+ */" --filter="- *" /path/to/src/ /path/to/dest/
rsync --archive --verbose --filter="+ */" --filter="- *" /path/to/apache/logs/ user@domain:/path/to/apache/logs/

Использование параметров --include и --exclude вместо правил --filter в более старой версии rsync:

rsync --archive --verbose --include="*/" --exclude="- *" /path/to/src/ /path/to/dest/
rsync --archive --verbose --include="*/" --exclude="*" /path/to/apache/logs/ user@domain:/path/to/apache/logs/
1

одно решение может быть

find . -type d > dirs

чтобы найти каталоги, используйте этот файл с опцией -T tar:

tar cpzT dirs -f dest_file.tar.gz

который должен создать сжатый архив (z) с сохранением разрешений (p) путем архивирования только перечисленных файлов (T dirs). Передача файла, распаковать с

tar xpzf dest_file.tar.gz

и ты должен быть готов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .