rsyncが.htaccessファイルを同期していません


91

server1のディレクトリAをserver2のディレクトリBとrsyncしようとしています。

server1のディレクトリAに座って、次のコマンドを実行しました。

rsync -av * server2::sharename/B

しかし興味深いのは、.htaccessまたはディレクトリA内の隠しファイルを除くすべてのファイルとディレクトリを同期することです。サブディレクトリ内の隠しファイルはすべて同期されます。

次のコマンドも試しました。

rsync -av --include=".htaccess" * server2::sharename/B

しかし、結果は同じです。

Aディレクトリの隠しファイルが同期されない理由とその修正方法に関するアイデア。私はrootユーザーとして実行しています。

ありがとう


1
私はあなたが1つの答えに満足しているしました、あなたはそれを受け入れる必要があります。meta.stackexchange.com/questions/5234/...
Kutzi

回答:


109

これは*、名前がドットで始まるファイルを除いて、デフォルトで現在の作業ディレクトリ内のすべてのファイルに展開されるためです。したがって、rsyncこれらのファイルを引数として受け取ることはありません。

.現在の作業ディレクトリを示すものを次の場所に渡すことができますrsync

rsync -av . server2::sharename/B

この方法でrsyncは、展開先でファイルを探すのではなく、現在の作業ディレクトリで転送するファイルを探し*ます。

または、次のコマンドを使用*して、ドットで始まるファイルを含むすべてのファイルに展開することもできます。

shopt -s dotglob

shoptのマンページも参照してください。


7
確かに '。' 問題を解決します、例えばrsync -avz user@domain.com:/remote/path/. /destination/path仕事をします
Mariusz Nowak

57

例えば、同期-ちょうど(すべての隠されたファイルを含む)のサーバー間の同期ディレクトリにしようとしている人のためsomedirAsource-serversomedirB-先サーバー上でこれを試してください

rsync -avz -e ssh --progress user@source-server:/somedirA/ somedirB/

両方のパスの終わりにあるスラッシュに注意してください。他の構文は予期しない結果につながる可能性があります!


また、rsync適切な書き込みアクセス権を持っていることを確認する方が簡単なので、宛先サーバーからコマンドを実行するのが最も簡単です(つまり、sudo上記のコマンドに追加する必要がある場合があります)。

おそらく言うまでもありませんが、明らかにリモートユーザーもsomedirAソースサーバーへの読み取りアクセス権を必要とします。:)


.htaccessファイルを同期するのは-eフラグでしたか?
Jesse Burcsik 2014年

1
@JesseBurcsikいいえ、は-e ssh接続方法を指定します。
トリプリー2016

1
ソースにスラッシュが必要なだけで、宛先は関係ありません
Jonas Stensved 2016

28

私も同じ問題を抱えていました。

私にとって、次のコマンドを実行したとき、隠しファイルはrsyncされませんでした

rsync -av /home/user1 server02:/home/user1

しかし、パスの最後にスラッシュを追加すると、隠しファイルがrsyncされました。

rsync -av /home/user1/ server02:/home/user1/

ブライアン・レイシーがスラッシュが鍵であると言ったので、パスの終わりにあるスラッシュに注意してください。私は彼の投稿にコメントするという評判がありません、さもなければ私はそれをしたでしょう。


1
ただ、追加shopt -s dotglobのrsyncする前にスクリプトに
Pian0_M4n

3

問題はシェルのワイルドカード拡張が原因だと思います。使用する 。星の代わりに。

次のディレクトリコンテンツの例を検討してください

$ ls -a .
. .. .htaccess a.html z.js

シェルのワイルドカード拡張は、rsyncプログラムが取得する引数リストを変換します

-av * server2::sharename/B

-av a.html z.js server2::sharename/B

コマンドの実行が開始される前。


3

*隠しファイルを同期さないようにrsynchに教えてください。省略しないでください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.