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

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

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

  • Почему mknod требует привилегии root?
  • Proftpd не отвечает команде «PASV»
  • Я случайно GZIPed целую кучу файлов, один за другим, вместо использования tar (1). Как я могу отменить этот беспорядок?
  • Нужна программа командной строки для загрузки всех ссылок http: // https: // scp: // ftp: // style (например, ubuntu)
  • Как разработать несколько выбранных файлов путем перетаскивания в сценарий bash
  • В чем преимущество файлов .desktop без бита исполняемого бита?
  • Вот шаги в форме списка:

    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?

  • Как я рекурсивно ретранслировать через .gz-файлы?
  • Как найти удобочитаемую информацию о типах файлов, распознанных `file`?
  • Удалить файлы, кроме n файлов с «большим» именем?
  • Как вы называете «счастливую собаку» частью файла «happy-dog.png»?
  • Копирование последовательных файлов
  • Нужна программа командной строки для загрузки всех ссылок http: // https: // scp: // ftp: // style (например, ubuntu)
  • 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 - лучшая ОС в мире.