Подтвердить что ты не робот

Можно ли заставить SCP игнорировать символические ссылки во время копирования?

Мне нужно переустановить один из наших серверов, и в качестве меры предосторожности я хочу переместить /home, /etc, /opt и /Services на сервер резервного копирования.

Однако у меня есть проблема: из-за большого количества символических ссылок много файлов копируются несколько раз.

Можно ли сделать scp игнорировать символические ссылки (или фактически скопировать ссылку как ссылку не как каталог или файл)? Если нет, есть ли другой способ сделать это?

4b9b3361

Ответ 1

Я знал, что это возможно, я просто ошибся. Я сделал это с помощью rsync

rsync --progress -avhe ssh /usr/local/  XXX.XXX.XXX.XXX:/BackUp/usr/local/

Ответ 2

Я обнаружил, что метод rsync не работал у меня, однако я нашел альтернативу, которая работала на этом сайте (www.docstore.mik.ua/orelly).

В частности раздел 7.5.3 из "O'Reilly: SSH: защищенная оболочка. Окончательное руководство" .

7.5.3. Рекурсивная копия каталогов

...

Хотя scp может копировать каталоги, это не обязательно лучший метод. Если ваш каталог содержит жесткие ссылки или софт-ссылки, они не будут дублироваться. Ссылки копируются как простые файлы (целевые ссылки), и, что еще хуже, круговые каталоги ссылаются на scp1 на бесконечность. (scp2 обнаруживает символические ссылки и копирует их цели.) Другие типы специальных файлов, таких как именованные каналы, также не копируются правильно. Лучшим решением является использование tar, который правильно обрабатывает специальные файлы и отправляет его на удаленный машина должна быть отброшена через SSH:

$ tar cf - /usr/local/bin | ssh server.example.com tar xf -

Ответ 3

Использование tar над ssh, поскольку оба отправителя и получателя тоже делают трюк:

cd $DEST_DIR
ssh [email protected] 'cd $REMOTE_SRC_DIR; tar cf - ./' | tar xvf -

Ответ 4

Одним из решений является использование оболочки оболочки. У меня есть ситуация, когда у меня есть некоторые *.gz файлы и символические ссылки, созданные некоторым программным обеспечением, для ссылки на те же *.gz файлы со слегка коротким именем. Если я просто использую scp, символические ссылки будут скопированы как обычные файлы и будут дублироваться. Я знаю, что rsync может игнорировать символические ссылки, но мои gz файлы не сжимаются с возможностью синхронизации, а синхронизация происходит очень медленно при копировании этих файлов gz. Поэтому я просто использую следующий script для копирования файлов:

find . -type f -exec scp {} target_host:/directory/name/data \;

Параметр -f будет находить только обычные файлы и игнорировать символические ссылки. Вам нужно передать эту команду на исходный хост. Надеюсь, это может помочь некоторым пользователям в моей ситуации. Дайте мне знать, если я что-то пропустил.