このcronスクリプトを使用してRsyncを操作しようとしています。
*/1 * * * * /root/backup.sh `date +today/\%M`
そして以下のようなシェルスクリプト
#!/bin/bash -x
PATH=/bin:/usr/bin:/sbin:/usr/sbin
REMOTE="REMOTEADDRESS"
RSYNC=/usr/bin/rsync
コメント:これはうまくいきます。
$RSYNC -aqz --exclude-from '/home/root/backups/backup-exclude.txt' /var/www/html $REMOTE:backups/
コメント:失敗しました
$RSYNC -aqz --exclude-from '/home/root/backups/backup-exclude.txt' /var/www/html $REMOTE:$1/
渡されたパラメータがスクリプトに正しく渡されない理由を理解できません。ログにはすべてが期待どおりに表示されます。
cronアップデートスクリプトにパラメータを含めずにパラメータを渡す理由は、次のことを許可するバックアップ計画を設定するためです。 - 毎日の時間別バックアップのバックアップ - 毎月のバックアップ毎日のバックアップ - 毎月の耐久性のあるバックアップ
パラメータを渡すときに発生するエラーは、RSyncがリモートサーバーでmkdirを実行できないことです。すべての静的ラインで使用できます。ログには、現在cronを使用しているときに渡された正しいディレクトリが表示されます。
答え1
dest/dir
コピーするディレクトリがリモートシステム()にあることを確認する必要があります。
rsync -aqz ./ user@host:dest/dir
少なくとも最後のディレクトリを除くすべてのディレクトリがすでに存在している必要があります。これはmkdirと同じ動作ですmkdir
。 mkdirは最後のディレクトリのみを生成します(デフォルトではこの-p
オプションで変更できます)。つまり、リモートシステムに存在しない限りrsync
失敗します。/home/user/dest/dir
それは関連している比較的目次。
でも同じ状況が発生します純粋なディレクトリ(で始まるディレクトリ/
):
rsync -aqz ./ user@host:/home/user/dest/dir
ルールはまったく同じですが、ディレクトリは異なります。推定ユーザーのホームディレクトリにありますが、どこにでも配置できます(もちろん、ユーザーに書き込み権限が必要です)。
rsync
追加のテストでは、ifが次のディレクトリを使用していることがわかりました。
newdir/testdir
少なくともnewdirディレクトリが存在する必要があります。これはmkdirと完全に同じです。 dirがmkdir newdir/testdir
なければ、newdir
Aは失敗します。
報告したのと同じスクリプトを使用してテストしました。
- 固定ディレクトリとともに使用されます。
- 引数に指定されたディレクトリ、
- スクリプト引数
$1
で指定されたディレクトリ - 上記の操作はすべてcronの有無にかかわらず繰り返されます。
すべての場合に初期ディレクトリがありません。二つの部分ディレクトリのインポートrsyncに失敗しました。