40日を過ぎたファイルをリモートからローカルホストに転送したいと思います。リモートサーバーに接続できますが、リモートサーバーからローカルサーバーにファイルを転送できません。そのファイルやディレクトリはありませんが、ファイルがリモートホストに存在するというエラーが発生します。
詳細:
file=`sshpass -p "password" ssh username@server_ip "find /arch -type f -ctime -40"`
sshpass -p "password" scp -r username@server_ip:$file /arch
echo SCP Completed.
エラー情報:
cp: cannot stat ‘/arch/file1.xls’: No such file or directory
答え1
次のいずれか1つに注意を払う必要があります。
- 権限:ファイルを読み取るための正しい権限がない可能性があります。
- 複数行の回答:クエリの結果として複数のファイルが提供されることがあります。
簡単に言えば、おそらくあなたの問題はsshpass
。
これから権限関連の問題はないと考えます。
あなたができることは次のとおりです。
files="$(sshpass -p "passwd" ssh -l username rhost "find /arch -type f -ctime -40")"
for file in ${files}; do
if sshpass -p "passwd" scp "username@rhost:${file}" /arch; then
printf "SCP Completed\n"
fi
done
理論的には、アクセスできないファイル(フォルダ)に印刷される$files
ため、スクラップできないコンテンツはないため、個別に管理する必要があります。find
stderr
すべてのオプションの中で、ループ内で条件を結合してstderr
追加したり、別の変数(またはファイル)にエラーを保存したり、別々にループを繰り返すことができます。stdout
for