1K개 이상의 파일을 한 서버에서 다른 서버로 이동하고 싶지만 29개 파일만 복사되고 재설정을 복사할 수 없습니다. SCP를 사용할 때와 동일한 상황입니다.
#scripts for backup
#sripts prepared by dhafer [email protected]
#!/bin/bash
date=$(date +"%Y%m")
/usr/bin/expect<<EOF
cd /home/mdsp/lcftp/templc/sag/sa/run/sa/10.157.78.40
spawn bash -c "/usr/bin/scp *$date*.log [email protected]:/tmp/dhafer"
expect "Password:"
send "Zain@123\r"
expect eof
EOF
그리고
#scripts for backup
#sripts prepared by dhafer 0592996292 [email protected]
#!/bin/bash
DATE=$(date +"%Y%m")
HOST=10.157.78.143
PORT=22
USER=root
PASSWORD=Zain@123
SOURCE_FILE=/home/mdsp/lcftp/templc/sag/sa/run/sa/10.157.78.40/*$DATE*
TARGET_DIR=/tmp/dhafer
/usr/bin/expect<<EOD
spawn /usr/bin/sftp -o Port=$PORT $USER@$HOST
expect "password:"
send "$PASSWORD\r"
expect "sftp>"
send "put $SOURCE_FILE $TARGET_DIR\r"
expect "sftp>"
send "bye\r"
확인해 주실 수 있나요?
답변1
명령줄이 너무 길 수도 있습니다. 예를 들어 를 사용하여 몇 가지 더 작은 scp
명령을 실행해야 합니다 xargs
. 그러나 예상/암호 스크립트는 코딩을 약간 어렵게 만듭니다.
아마도 여기에서 "xargs와 유사한" scp 솔루션을 찾을 수 있을 것입니다. xargs를 사용하여 scp에 인수 제공
또는 find, tar, ssh 파이프라인을 사용하십시오.
find . -maxdepth 1 -name "*$date*.log" -print0 |\
tar -czvf backup.tar.gz --null -T - |\
ssh user@host "cd /tmp/dhafer && tar xvzf -"
또는 rsync
쉘 와일드카드를 사용하지 않고 시도해 볼 수도 있습니다.
rsync --include="*$date*.log" --exclude="*" ./ [email protected]:/tmp/dhafer/
노트어쨌든 SSH에 공개 키 인증을 사용할 수 있다면 도움이 될 것입니다.