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で公開鍵認証を使用できる場合は役立ちます。