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

Удаленный сервер Linux на удаленную копию сервера Linux. Как?

Каков наилучший способ скопировать каталог (с поддиректорами и файлами) с одного удаленного сервера Linux на другой удаленный сервер Linux? Я подключился как к SSH-клиенту (например, к Putty). У меня есть root-доступ к обоим.

4b9b3361

Ответ 1

Есть два способа, которыми я обычно это делаю, оба используют ssh:

scp -r sourcedir/ [email protected]:/dest/dir/

или, более надежный и быстрый (с точки зрения скорости передачи) метод:

rsync -auv -e ssh --progress sourcedir/ [email protected]:/dest/dir/

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

Ответ 2

Я бы изменил ранее предложенный ответ:

rsync -avlzp /path/to/sfolder [email protected]:/path/to/remote/dfolder

следующим образом:

-a (для архива) подразумевает -rlptgoD, так что l и p выше являются излишними. Я также хотел бы включить -H, который копирует жесткие ссылки. Это не является частью -a по умолчанию, потому что это дорого. Итак, теперь мы имеем это:

rsync -aHvz /path/to/sfolder [email protected]:/path/to/remote/dfolder

Вы также должны быть осторожны с трейлинг-косой чертой. Вероятно, вы хотите

rsync -aHvz /path/to/sfolder/ [email protected]:/path/to/remote/dfolder

если желание в исходной папке "sfolder" появится в целевой папке "dfolder". Без конечной косой черты в папке назначения "dfolder" будет создан подкаталог "sfolder".

Ответ 3

rsync -avlzp/path/to/folder [email protected]:/путь/в/удаленный/папка

Ответ 4

Войдите на одну машину

$scp -r/path/to/top/directory user @server:/path/to/copy

Ответ 5

scp -r <directory> <username>@<targethost>:<targetdir>

Ответ 8

Используйте rsync, чтобы продолжить, если соединение сломается. И если что-то изменится, вы можете скопировать их намного быстрее!

Rsync работает с SSH, поэтому ваша операция копирования безопасна.

Ответ 9

Я использовал rdiffbackup http://www.nongnu.org/rdiff-backup/index.html, потому что он делает все, что вам нужно, без каких-либо причудливых вариантов. Он основан на алгоритме rsync. Если вам нужно копировать только один раз, вы можете позже удалить каталог rdiff-backup-data на целевом узле.

rdiff-backup [email protected]::/source-dir [email protected]::/dest-dir

из документа:

rdiff-backup также сохраняет подкаталоги, жесткие ссылки, файлы dev, разрешения, uid/gid, время модификации, расширенное атрибуты, acls и ресурсные вилки.

который является бонусом к предложениям scp -p, поскольку параметр -p не сохраняет все (например, права на каталоги установлены плохо)

установить на ubuntu:

sudo apt-get install rdiff-backup

Ответ 10

Хорошо, быстрый ответ мог бы взглянуть на man-страницу "scp", или, возможно, на rsync - в зависимости от того, что вам нужно скопировать. Если бы вам пришлось, вы могли бы даже сделать tar-over-ssh:

tar cvf - | ssh server tar xf -

Ответ 11

Я думаю, вы можете попробовать:

rsync -azvu -e ssh [email protected]:/directory/ [email protected]:/directory2/

(и я предполагаю, что вы находитесь на host0 и хотите скопировать из host1 в host2 напрямую)

Если вышеуказанное не работает, вы можете попробовать:

ssh [email protected] "/usr/bin/rsync -azvu -e ssh /directory/ [email protected]:/directory2/"

в этом случае, это сработает, если у вас уже есть пароль для входа в систему без пароля SSH с host1 на host2

Ответ 12

Как идеальный пользователь без root:

scp -r src $host: $path

Если вы уже часть содержимого на $host, рассмотрите возможность использования rsync с ssh в качестве туннеля.

/Allan

Ответ 13

Если вы серьезно относитесь к желанию точной копии, вы, вероятно, также захотите использовать ключ -p для scp, если вы используете это. Я обнаружил, что scp читает с устройств, и у меня были проблемы с cpio, поэтому я лично всегда использовал tar, например:

cd /origin; find . -xdev -depth -not -path ./lost+found -print0 \
| tar --create --atime-preserve=system --null --files-from=- --format=posix \
--no-recursion --sparse | ssh targethost 'cd /target; tar --extract \
--overwrite --preserve-permissions --sparse'

Я держу это заклинание в файле с различными другими способами копирования файлов. Это для копирования через SSH; другие - для копирования в сжатый архив, для копирования на том же компьютере и для копирования через незашифрованный TCP-сокет, когда SSH слишком медленный.

Ответ 14

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

Ответ 15

Мне нравится транслировать tar через ssh.

tar cf - [каталог] | ssh [имя пользователя] @[имя хоста] tar xf - -C [назначение на удаленном поле]

Этот метод дает вам множество опций. Поскольку вы должны иметь root ssh, которые не могут копировать файлы для нескольких учетных записей пользователей, сложно, так как вы регистрируетесь на удаленном сервере как обычный пользователь. Чтобы обойти это, вы можете создать файл tar в удаленном поле, которое все еще удерживает, что сохраняет право собственности.

tar cf - [каталог] | ssh [имя пользователя] @[имя хоста] "cat > output.tar"

Для медленных подключений вы можете добавить сжатие, z для gzip или j для bzip2.

tar cjf - [каталог] | ssh [имя пользователя] @[имя хоста] "cat > output.tar.bz2"

tar czf - [каталог] | ssh [имя пользователя] @[имя хоста] "cat > output.tar.gz"

tar czf - [каталог] | ssh [имя пользователя] @[имя хоста] tar xzf - -C [назначение на удаленном поле]

Ответ 16

scp выполнит задание, но есть одна морщина: соединение со вторым удаленным пунктом назначения будет использовать конфигурацию на первом удаленном пункте назначения, поэтому, если вы используете .ssh/config в локальной среде, и вы ожидаете, что rsa и dsa для работы, вам необходимо перенаправить агента на первый удаленный хост.