Server1のディレクトリAとserver2のディレクトリBをrsyncしようとしています。
Server1のディレクトリAに座って、次のコマンドを実行しました。
rsync -av * server2::sharename/B
ただし、興味深いのは、.htaccessまたはディレクトリAの隠しファイルを除くすべてのファイルとディレクトリを同期することです。サブディレクトリ内の隠しファイルはすべて同期されます。
また、次のコマンドも試しました。
rsync -av --include=".htaccess" * server2::sharename/B
しかし、結果は同じです。
Aディレクトリの隠しファイルが同期されない理由とその修正方法。 rootユーザーとして実行しています。
ありがとう
これは、*
がデフォルトで現在の作業ディレクトリにある名前がドットで始まるファイルを除くすべてのファイルに展開されるためです。したがって、rsync
はこれらのファイルを引数として受け取ることはありません。
現在の作業ディレクトリを示す.
をrsync
に渡すことができます。
rsync -av . server2::sharename/B
このようにすると、rsync
は*
が展開される場所でファイルを探すのではなく、現在の作業ディレクトリで転送するファイルを探します。
または、次のコマンドを使用して、*
をドットで始まるファイルを含むすべてのファイルに展開できます。
shopt -s dotglob
shopt manpage も参照してください。
サーバー間でディレクトリ(すべての隠しファイルを含む)を同期しようとしている人-たとえば、source-server
のsomedirA
を宛先サーバーのsomedirB
に同期-これを試してください:
rsync -avz -e ssh --progress user@source-server:/somedirA/ somedirB/
両方のパスの最後にあるスラッシュに注意してください。他の構文は予期しない結果につながる可能性があります!
また、宛先サーバーからrsync
コマンドを実行するのが最も簡単です。適切な書き込みアクセス権があることを確認するのが簡単だからです(つまり、コマンドにSudo
を追加する必要がある場合があります)上記)。
おそらく言うまでもありませんが、明らかに、リモートユーザーにはソースサーバー上のsomedirA
への読み取りアクセスも必要です。 :)
同じ問題がありました。
私にとって次のコマンドを実行したとき、隠しファイルは実行しましたnot get rsync'ed
rsync -av /home/user1 server02:/home/user1
しかし、パスの最後にスラッシュを追加すると、隠しファイルは再同期されました。
rsync -av /home/user1/ server02:/home/user1/
パスの最後のスラッシュに注意してください、ブライアンレイシーはスラッシュがキーだと言った。私は彼の投稿にコメントする評判がありません。
問題はシェルワイルドカードの拡張によるものだと思います。つかいます 。星の代わりに。
次のディレクトリコンテンツの例を検討してください
$ ls -a .
. .. .htaccess a.html z.js
シェルのワイルドカード展開は、rsyncプログラムが取得する引数リストを変換します
-av * server2::sharename/B
に
-av a.html z.js server2::sharename/B
コマンドの実行が開始される前。
*
は、隠しファイルを同期しないようにrsynchに指示します。省略しないでください。