Загрузка файлов по ssh на основе списка имен файлов

Итак, вот что я сделал уже:

У меня есть файл с именем abc.txt, который содержит список файлов. Я использую abc.txt для перемещения этих файлов в папку, в эту папку, и, наконец, я загружаю tar на свой локальный ПК с моего сервера, на котором работает GNU / Linux.

Вот шаги в форме списка:

  1. abc.txt
  2. abc.txt (перечисленные файлы) -> папка
  3. Папка -> folder.tar
  4. folder.tar -> локальный ПК.

Если abc.txt содержит 2 файла, например:

example1.css example2.css 

Мне нужно загрузить эти файлы из abc.txt отдельно и напрямую на локальный ПК.

Поскольку ftp или sftp требуется имя файла для его загрузки, как я могу прочитать это из abc.txt?

  • Пользователь не может касаться -t
  • vsftpd - ftp пользователь не может создавать папки
  • анонимный или гостевой вход в vsftpd?
  • Права доступа к Linux vsftpd
  • как узнать на моей Linux-машине, если активен VIA sftp
  • Symlink в тот же каталог
  • Как настроить права доступа / права доступа для FTP / Apache / PHP на CentOS
  • Скопировать содержимое папки удаленного сервера на текущий сервер?
  • 3 Solutions collect form web for “Загрузка файлов по ssh на основе списка имен файлов”

    Если файл abc.txt содержит список имен файлов, относящихся к /path/to/base :

     ssh user@server tar c -T /path/to/abc.txt -C /path/to/base | (cd /tmp; tar xv) 

    Это создает tarball «на лету», практически не сохраняя его нигде, подключая его к локальной оболочке, извлекайте, эффективно копируя перечисленные файлы.

    ДОПОЛНИТЕЛЬНЫЕ СОВЕТЫ

    Если файл abc.txt содержит список абсолютных путей:

     ssh user@server tar c -T /path/to/abc.txt | (cd /tmp; tar xv) 

    Если файл abc.txt находится на вашей локальной системе, а не на пульте дистанционного управления:

     ssh user@server tar c -T- < /path/to/abc.txt | (cd /tmp; tar xv) 

    Чтобы использовать сжатие gzip (используя уровень по умолчанию 6):

     ssh -C user@server tar c -T /path/to/abc.txt | (cd /tmp; tar xv) 

    Чтобы использовать уровень сжатия gzip 9:

     ssh user@server 'tar c -T /path/to/abc.txt | gzip -9' | (cd /tmp; tar zxv) 

    Вот простой скрипт, который работает с файлами, содержащими пробелы в имени файла:

     SAVEIFS=$IFS; IFS=$(echo -en "\n\b") ; for elt in `cat abc.txt` ; do scp $elt <YOUR_SFTP_CONNECTION> ; done ; IFS=$SAVEIFS 

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

     egrep 'example1.css|example2.css' abc.txt 

    предоставит вам все строки, соответствующие исключениям, и

     egrep -v 'example1.css|example2.css' abc.txt 

    даст вам все строки, которые не соответствуют исключениям

    Linux и Unix - лучшая ОС в мире.