Использование scp для передачи a.txt список файлов

у меня 1,6 миллиона файлов на сервере A, и только около 20 тысяч из них нужно добраться до сервера B. место назначения, сервер B, находится на общем хостинге GoDaddy, поэтому я почти ограничен scp для передачи многих файлов сразу.

Я хотел бы создать .txt-файл из этих 20k + файлов из SQL-запроса, а затем передать этот список в scp. Есть ли варианты сделать это?

cat /proc/version дает мне Linux version 2.6.32-531.23.3.lve1.2.65.el6.x86_64 (mockbuild@koji.cloudlinux.com) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Tue Aug 19 10:37:27 EDT 2014

2
задан Morgan Delaney
02.04.2023 7:45 Количество просмотров материала 2617
Распечатать страницу

4 ответа

если текстовый файл уже создан, выполните следующие действия

cat /location/file.txt | xargs -i scp {} user@server:/location

это будет идти строка за строкой вывода файла.TXT и выполнить УПП comamand на линию; я надеюсь, что это помогает.

6
отвечен henry Stark 2023-04-03 15:33

ответ, работает отлично. Я использовал xargs -a послать архив к стандарту вне. Затем я объединил это с оригинальным ответом cat /location/file.txt | xargs -i scp {} user@server:/location

Мой Ответ:

xargs -a /location/file.txt | xargs -i scp {} user@server:/location
1
отвечен Phil V. 2023-04-03 17:50

приведенные выше ответы требуют аутентификации для каждого переданного файла. SCP работает поверх SSH, а GoDaddy предоставляет доступ к другим командам через SSH, таким как tar. Таким образом, лучший способ-использовать tar с ssh через:

tar -T <file> -cf - | ssh <user>@<host> "tar -C <dir> -xvf -"

Если список файлов вывод можно сделать следующий: Примечание: cat используется здесь только для генерации STDIN

cat <file> | tar -T - -cf - | ssh <user>@<host> "tar -C <dir> -xvf -"

на уменьшенное время передачи за счет дополнительное время обработки, вы можете добавить-z или-j для обеих команд tar, чтобы включить сжатие gzip или bzip соответственно.

0
отвечен deAtog 2023-04-03 20:07

Я хотел сделать то же самое для списка папок и ни один из ответов, используя xargs работал для меня. В конце концов я решил это просто:

scp -r user@server:/location/{"$(cat folder_list.txt | tr '\n' ',' | sed 's/,$//')"} .

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

0
отвечен Martin 2023-04-03 22:24

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх