it-swarm-ru.tech

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

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

43
Arun Agrawal

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

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

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

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

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

62
Ycros

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

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".

32
user19218

rsync -avlzp/путь/к/папке [email protected]:/путь/к/удаленной/папке

9
Ana Betts
scp -r <directory> <username>@<targethost>:<targetdir>
6
Cody Brocious

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

$ scp -r/path/to/top/каталог user @ server:/path/to/copy

5
Flame

Попробуйте унисон, если задача повторяется. http://www.cis.upenn.edu/~bcpierce/unison/

3
user11104

Проверьте scp или rsync , man scpman rsync

scp file1 file2 dir3 [email protected]:path
2
John Douthat

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

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

2
Ady Romantika

Я использовал 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
2
Gunstick

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

tar cvf - | ssh server tar xf -
1
zigdon

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

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]ost2:/directory2/"

в этом, это будет работать, если у вас уже есть установленный пароль без пароля SSH от Host1 до Host2

1
Ram Prasad

В качестве пользователя без полномочий root в идеале:

scp -r src $ Хост: $ путь

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

/ Allan

0
Allan Wind

Если вы серьезно хотите получить точную копию, вы, возможно, также захотите использовать ключ -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).

0
Teddy

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

0
Sergey Stolyarov

Мне нравится передавать 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 [пункт назначения на удаленном компьютере]

0
Chuck