rsyncからファイルを除外するのに問題があります。問題のファイルはそのファイルが存在するコンピューターに固有の構成ファイルであるため、開発コンピューターにはバージョンが 1 つ、実稼働コンピューターには別のバージョンがあります。
コマンドラインで除外項目を使用して機能させることはできますが、ディレクトリ固有のルールファイルと連携させることをお勧めします。
したがって、次のように要約された例を見てみましょう。
/mydir/
/mydir/foo/
/mydir/foo/bar.txt <-- this is the config. file
/mydir/foo/baz.txt
/mydir/foo/.rsync-filter
.rsync-filter には以下が含まれます。
- bar.txt
mydirを親作業ディレクトリとして使用してrsyncを試します。
$ rsync -rptFvv --delete mydir/ remote.example.com:/home/pryan/temp/rsynctest/
opening connection using: ssh remote.example.com rsync --server -vvtpre.iLs --delete . /home/pryan/temp/rsynctest/ (8 args)
sending incremental file list
[sender] hiding file foo/.rsync-filter because of pattern .rsync-filter [per-dir .rsync-filter]
[sender] hiding file foo/bar.txt because of pattern bar.txt [per-dir .rsync-filter]
delta-transmission enabled
foo/
deleting foo/bar.txt
foo/baz.txt is uptodate
total: matches=0 hash_hits=0 false_alarms=0 data=0
sent 119 bytes received 107 bytes 90.40 bytes/sec
total size is 4 speedup is 0.02
確かにそうです。はい.rsync-filterルールを読むと「foo/bar.txtを隠す」と言われていますが - は除外、つまり隠しと保護を意味するという印象を受けました。
私はこれが(私の立場では)愚かなことになると確信しています。だからリラックスしてください。私は準備ができていて、自分を蹴るのを待っています! :D
アップデート:ローカルでrsync 3.1.0(Ubuntu 14.04)を実行し、リモートでrsync 3.0.9(Debian 7)を実行していることを忘れました。
答え1
除外するのではなく保護するには、.rsyncフィルタでPを使用する必要があります。フィルタからそれを除外すると、ソースから取得されず、ターゲットがソースから送信されたファイルのリストからそのエントリを表示できないため、--deleteが開始されます。