Если я вошел в систему через SSH на 2 серверах и хочу скопировать некоторые файлы с одного на другой (например, конфигурацию со старого на новый сервер), каков самый простой способ сделать это?
Как скопировать файлы между двумя открытыми SSH оболочками?
3 ответа
на server1:
scp <files> server2:/dest/dir/
или, если у вас установлена rsync:
rsync -azvu basedir/ server2:destdir/
Если не, труба через смолу, то:
tar cf - -C srcdir | ssh server2 tar xf - -C dstdir
последние два копируют все деревья каталогов. Первые один или несколько файлов в каталоге.
другими словами, просто используйте инструменты оболочки из первого, чтобы скопировать непосредственно во второй.
Если общий размер не слишком большой, можно использовать эту маленькую хитрость.
- один исходный сервер, сделать
tar -cz <filestocopy> | base64
- скопировать вывод в буфер обмена
- на конечном сервере выполните
base64 -d | tar -xzv
- вставить, enter, Ctrl-D
Как это работает?
- создает сжатый tar файлов и base64 кодирует его, чтобы его можно было скопировать и вставить в виде обычного текста.
- настройка цепочки команд это делает обратное; декодирует вход base64 и извлекает tar.
- вставьте данные, чтобы вставить его в эту цепочку, а затем введите и Ctrl-D, чтобы отправить конец файла.
С двумя открытыми сеансами ssh самый быстрый способ копирования:
использовать netcat (nc)
Sender/Source machine: tar -czf - /source/dir | nc -l 2342 Receiver/Destination machine: nc -w 10 sourcemachine 2342 | tar -C /target/dir -xz -
использовать scp с менее безопасным шифрованием. По умолчанию blowfish обычно, но arcfour является гораздо более быстрой альтернативой.
scp -c arcfour mogga@flinflon:/home/users/mogga /dev/null
Я обычно использую второй вариант (просто потому, что я помню его чаще).
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]