Является самым легким, если Вы планируете заранее.
Откройте основное соединение в первый раз. Для последующих соединений направьте ведомые соединения посредством существующего основного соединения. В Вашем ~/.ssh/config
, настройте совместное использование соединения для случая автоматически:
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
При запуске ssh сессии к тому же (пользователь, порт, машина) как существующее соединение, вторая сессия будет туннелирована по первому. Установление второго соединения не требует никакой новой аутентификации и очень быстро.
Таким образом, в то время как у Вас есть свое активное соединение, Вы можете быстро:
scp
или rsync
;На существующем соединении можно установить реверс ssh туннель. На ssh командной строке создайте удаленную передачу путем передачи -R 22042:localhost:22
где 22042 случайным образом выбранное число, это отличается от любого другого номера порта на удаленной машине. Затем ssh -p 22042 localhost
на удаленной машине подключает Вас назад к исходной машине; можно использовать scp -P 22042 foo localhost:
скопировать файлы.
Можно автоматизировать это далее с RemoteForward 22042 localhost:22
. Проблема с этим состоит в том, что, если Вы соединяетесь с тем же компьютером с несколькими экземплярами ssh, или если кто-то еще использует порт, Вы не получаете передачу.
Если Вы не включили удаленную передачу из запуска, можно сделать это на существующей ssh сессии. Тип Входит ~C
Войти -R 22042:localhost:22
Войти. См. “Символы ESC” в руководстве для получения дополнительной информации.
В этом потоке Отказа сервера существует также некоторая интересная информация.
Если файл является маленьким, можно вывести его и вставка копии от терминального вывода. Если файл содержит непечатаемые символы, используйте кодирование, такое как base64.
remote.example.net$ base64(copy the output)
local.example.net$ base64 -d >myfile (paste the clipboard contents) Ctrl+D
Более удобно, если Вы имеете X активных передач, копируете файл на удаленной машине и вставляете его локально. Можно передать данные по каналу в и из xclip
или xsel
. Если Вы хотите сохранить имя файла и метаданные, вставка копии архив.
remote.example.net$ tar -czf - myfile | xsel
local.example.net$ xsel | tar -xzf -
Можно извлечь просто текст к стандартному выводу с -p
опция:
unzip -p myarchive.zip path/to/zipped/file.txt >file.txt
Это не извлечет метаданные (дата, полномочия, …), только содержание файла. Это - цена для оплаты за удобство не необходимости переместить файл впоследствии.
С другой стороны, смонтируйте архив как каталог и просто скопируйте файл. С AVFS:
mountavfs
cp -p ~/.avfs"$PWD/myarchive.zip#"/path/to/zipped/file.txt .
Или с zip предохранителя:
mkdir myarchive.d
fuse-zip myarchive.zip myarchive.d
cp -p myarchive.d/path/to/zipped/file.txt .
fusermount -u myarchive.d; rmdir myarchive.d
unzip -j "myarchive.zip" "in/archive/file.txt" -d "/path/to/unzip/to"
Введите полный путь для заархивированного файла, не только имя файла. Обязательно сохраните структуру, как замечено из zip-файла.
Это извлечет единственный файл file.txt
в myarchive.zip
кому: /path/to/unzip/to/file.txt
.
Более простая версия:
unzip ARCHIVE_NAME PATH_OF_FILE_INSIDE_ARCHIVE
Это воссоздаст PATH_OF_FILE_INSIDE_ARCHIVE
в текущем каталоге, но только извлекает указанный файл.
Перечислять все файлы в архиве Zip:
unzip -l ARCHIVE_NAME
В macOS, которая по умолчанию использует Info-Zip
Сначала перечислите файлы, чтобы найти то, что вам нужно
unzip -l my.zip
Затем предоставьте список файлов для извлечения из архива
unzip my.zip annoying/path/to/file
Объединить с -p для stdout
unzip -p my.zip annoying/path/to/file >./file
unzip zipfile.zip path/inside/zip/file.txt
и он раздует файл.
$ unzip -l./../html.zip | grep wp-config
3328 07-22-2019 15:10 html/wp-config.php
2898 01-07-2019 23:30 html/wp-config-sample.php
$ unzip./../html.zip html/wp-config.php
Archive: ./../html.zip
inflating: html/wp-config.php
$ ls -lrth
total 4.0K
drwxr-sr-x 2 apache apache 4.0K Jul 26 14:41 html
$ ls -lrth html/*
total 4.0K
-rw-rw-rw- 1 apache apache 3.3K Jul 22 15:10 wp-config.php
.jar
; если Ваш файл называют по-другому, Вы, возможно, должны были бы сказать AVFS использовать свой обработчик zip, например.~/.avfs$PWD/foo.apk#uzip/META-INF
. – Gilles 'SO- stop being evil' 01.06.2011, 10:19-p
извлекает файл как есть (-c
действительно пишет преобразование). – Gilles 'SO- stop being evil' 01.06.2011, 23:50