![쉘 스크립트를 사용하여 29개가 넘는 파일을 대상 서버에 복사할 수 없습니다.](https://linux55.com/image/96114/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%2029%EA%B0%9C%EA%B0%80%20%EB%84%98%EB%8A%94%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%8C%80%EC%83%81%20%EC%84%9C%EB%B2%84%EC%97%90%20%EB%B3%B5%EC%82%AC%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
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에 공개 키 인증을 사용할 수 있다면 도움이 될 것입니다.