Копировать определенные типы файлов с одного хоста на другой - PullRequest
1 голос
/ 29 сентября 2011

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

В настоящее время он генерирует эту команду: sshhost2 "cd dir1 / dir2 && find. -maxdepth 1 -regextype posix-extended -regex '. *. (c | h)' | tar -T - -c -f -" |tar xf -

Проблема в том, что я получаю эту ошибку: "tar: Это не похоже на архив tar"

Эта ошибка выводится окончательным tar (tar xf -), потому что дляпо какой-то причине файл tar, который передается по каналу, поврежден.

Если я делаю это вместо использования комбинации ssh, tar и scp, это работает нормально, но для этого необходимо дважды (один раз ввести свой пароль (для host2))для ssh и один раз для scp).Я мог бы ввести пароль в качестве аргумента сценария, но я не хочу, чтобы он появлялся в моей истории bash.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 29 сентября 2011

Рассматривали ли вы использование rsync с соответствующими флагами --include и --exclude?rsync может скопировать более ssh, и вы сможете скопировать все дерево (или подмножество) с помощью одной команды.

Кроме того, если ваша единственная задача - вводить пароль, выможно также попробовать использовать авторизованные ключи (и, возможно, ssh-agent), чтобы вам не нужно было вводить пароль для доступа к другому хосту.

2 голосов
/ 29 сентября 2011

Почему бы не использовать rsync вместо этого? Он поддерживает --filter, который точно соответствует вашим потребностям. Вот образец:

http://ubuntuforums.org/showthread.php?t=1240150

...