Так как у Вас есть пользовательский доступ к исходному серверу (тот), почему бы не войти и выполнить Вашу команду scp на том сервере непосредственно... Если Вы волнуетесь, что это займет слишком много времени, то запустите команду внутри a screen
затем отсоединение с экрана с Ctrl+a d
и позвольте ему работать.
Однако, если необходимо сделать это от рабочей станции, и ключи SSH с источника на целевой сервер работают хорошо, затем отправляют scp
управляйте как параметр ssh
команда, как:
ssh user@source 'scp /path/to/file user@destination:/path/to/file'
Поддерживает GNU TAL - преобразование = выражение
. В вашем случае это будет - преобразование S, /, -,
(кроме не было бы ни ведущих -
, которые я подозреваю, будет в порядке).
Добавление в @Marks answer
Мы можем сделать это с помощью -T
и --трансформировать
переключатели команды tar
.
У меня есть структура каталога, как показано ниже.
|-- foo1
| |-- file1.txt
| |-- file2.txt
| `-- file3.txt
|-- foo2
| |-- file4.txt
| |-- file5.txt
| `-- file6.txt
|-- foo3
| |-- file7.txt
| |-- file8.txt
| `-- file9.txt
`-- foo4
|-- file10.txt
|-- file11.txt
`-- file12.txt
Мы можем смонтировать файлы с включенным именем каталога
$ find -type f | tar --transform="s,/,-,2" -czvf compress.tgz -T -
И без включенного имени каталога.
$ find -type f | tar --transform="s,.*/,," -czvf compress.tgz -T -