web-dev-qa-db-ja.com

rsync-増分ファイルリストは送信されましたが、ファイルはサーバー上で更新されていません

デスクトップコンピューターからいくつかのソースファイルを操作しています。ソースファイルはコンパイルされ、リモートサーバーで実行されます。

私とサーバーの間にはかなりの遅延があるため、rsyncを使用してファイルをコンピューターにコピーし、編集してから、再度rsyncを使用して同期することにしました。 。

ただし、問題があります... rsyncは、ファイルを編集した後、サーバーに同期してファイルを更新しません。インクリメンタルファイルリストが送信されますが、ファイルの内容は変更されません。

これが私のbashセッションの完全な出力であり、何が起こるかを詳細に説明します。

  • ローカルマシンにいくつかのファイルがあります。 vimなどのエディターを使用して、これらのファイルの1つを編集します。ファイル構造はかなり一般的です。 2016-07-01というプロジェクトルートディレクトリがあります。このディレクトリには、多くのサブフォルダとソースファイルが含まれています。フォルダには、バージョン管理の方法として日付が付けられています。

(bash)

$ rsync -av ./2016-07-01 user@server:./path-to-project/2016-07-01
user@server's password: [enter password] 
sending incremental file list
2016-07-01/subfolder/
2016-07-01/subfolder/main.cpp

sent 2,238 bytes  received 272 bytes  557.78 bytes/sec
total size is 632,957  speedup is 252.17
  • Main.cppが更新されたように見えますが、サーバーにsshして、vimで開くと、変更されていないことがわかります。なんでこんなことが起こっているの?

  • 次に、同じコマンドを再度実行すると、次の出力が生成されます。

(bash)

$ rsync -av ./2016-07-01 user@server:./path-to-project/2016-07-01
user@server's password: [enter password] 
sending incremental file list

sent 1,342 bytes  received 36 bytes  110.24 bytes/sec
total size is 632,957  speedup is 459.33
  • 今回は増分ファイルリストは送信されません-理由はわかりません-rsyncはファイルがすでに更新されていると考えているため、更新されていない場合は何もしません...

  • 最後にmain.cppをチェックすると、間違いなく変更されています。

  • サーバー側のmain.cppは変更されていません。

また、日付と時刻のスタンプではなく、チェックサムに-cフラグを使用してみましたが、同じ結果が見られます。

1
user3728501

要するに、これはnot正しいコマンドです...

$ rsync -av ./2016-07-01 user@server:./path-to-project/2016-07-01

これis正しいコマンド...

$ rsync -av ./2016-07-01 user@server:./path-to-project

スラッシュまたは宛先のディレクトリ名はありません-これらを省略した場合、rsyncは必要に応じてディレクトリを作成します。 /2016-07-01は、2つの異なることを行う必要があることを意味すると思います。いいえ/はディレクトリの作成を意味します。 2016-07-01isがある場合、/を追加/削除した場合の効果がわかりません。おそらく誰かがこれを明確にすることができます。

また、リモートサーバーで宛先をアドレス指定する方法は3つあることに注意してください。

  • 上記の方法を使用して、アドレスを.で開始します。 rsyncコマンドはデフォルトでユーザーのホームディレクトリに設定されるため、ホームディレクトリへのこの相対パスが機能します。

  • ルートディレクトリから絶対パスを入力することもできます。私にとって、これは/afs/servername/u/username/rest_of_path_from_home_dirのようなものです

  • 最後に、上記のショートカットとして~展開を使用することもできます。

2
user3728501