файл scp в новый каталог

Я написал следующий сценарий. Он создает новый каталог в формате «Год, Месяц, День». Предполагается, что он должен скопировать файл во вновь созданный каталог, сценарий создает каталог на удаленном сервере, но копирует файл в каталог, а не в подкаталог, который предположительно должен быть 2017-08-18, и так далее. .

[root@hostname ~]# cat ontape.sh
#!/bin/bash
#
sshpass -p 'PASSWORD' ssh root@hostname mkdir -p /home/mybackup/ontape/$(date +%Y-%m-%d)
sshpass -p 'PASSWORD' ssh root@hostname mkdir -p /mybackup/ontape_tmp_backup/$(date +%Y-%m-%d)
for server in $(cat servers.txt)
do
   sshpass -p 'PASSWORD' scp /dbbackup/backupdb/ontape/fullsize/* $server
done

Кроме того, файл /root/servers.txt имеет следующий код.

[root@hostname ~]# cat servers.txt
root@hostname:/mybackup/ontape_tmp_backup
root@hostname:/home/mybackup/ontape
0
26.11.2018, 00:29
1 ответ

Вы должны изменить эту строку и добавить в нее созданный вами каталог, как показано ниже.

sshpass -p 'PASSWORD' scp /dbbackup/backupdb/ontape/fullsize/* "$server/$(date +%Y-%m-%d)"

Вместо этого вы также можете использовать rsync, так как он создаст каталог последнего уровня в целевом пути, если он не существует и нет необходимости mkdirв качестве дополнительной команды.

sshpass -p 'PASSWORD' rsync /dbbackup/backupdb/ontape/fullsize/* "$server/$(date +%Y-%m-%d)"

это создаст каталог из "$(date +%Y-%m-%d)", если он не существует в пути назначения.

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

for dest in dest1 dest2; do 
    sshpass -p 'PASSWORD' rsync -av /path/to/src/* "$dest/$(date +%Y-%m-%d)"
done

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

ssh-keygen -t rsa
ssh-copy-id USER@HOST 
1
28.01.2020, 02:45

Теги

Похожие вопросы