質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

3回答

7979閲覧

rsyncで特定のファイル以外は同期させたい。

yajin

総合スコア75

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2017/01/14 00:18

編集2017/01/14 00:19

特定のファイルのみ同期を除外させたいと思っています。
hoge.phpというファイル以外は同期させたいと考えています。

linux

1rsync -apru --exclude '/var/www/html/projects/hoge/config/hoge.php' /home/teratail/projects/ /var/www/html/projects/hoge

としても除外がなぜかされません。なぜでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

・.解決注意点
1.=つける
2.同期除外ファイルを指定するが、絶対パスではダメ。

rsync -apru --exclude='hoge.php' /home/teratail/projects/ /var/www/html/projects/hoge

こんな感じです。
でもこういう場合、同一ファイル名がもしあった場合どうするの?というのが疑問です。

投稿2017/01/14 01:18

編集2017/01/14 01:20
yajin

総合スコア75

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

私が成功しているパターンでは、 --exclude は '=' でパターンを指定しています。また、パスは同期ポイントのルートからのパスになります。なので、

rsync -apru --exclude='/config/hoge.php' /home/teratail/projects/ /var/www/html/projects/hoge

ではどうでしょうか。

投稿2017/01/14 00:27

編集2017/01/14 01:31
mit0223

総合スコア3401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yajin

2017/01/14 00:31

同じ回答ですが、excludeは同期先でいいのでしょうか?
mit0223

2017/01/14 00:44

あ、フルパス指定なんですね。その場合、同期元を指定する必要があると思います。私が成功しているパターンではディレクトリ名だけを指定しているので、同期元、同期先の区別がありませんでした。
yajin

2017/01/14 01:21 編集

ファイル名を直接指定しました。 しかし、ディレクトリ別で同一ファイル名があった場合、どうするか疑問が残りました。
mit0223

2017/01/14 01:30

すみません。rsync の manpage によると、パターンを '/' ではじめると、同期ポイントのルートからのパスになるそうです。なので、 rsync -apru --exclude='/config/hoge.php' /home/teratail/projects/ /var/www/html/projects/hoge が正解ではないでしょうか。
yajin

2017/01/14 01:36

お手数をお掛けして申し訳ございません。 なるほど。このようにすればいわけですね。 後学者のためにこちらもよい回答例だということがわかりました。
guest

0

検証してませんが、--exclude の後ろに = を入れてはどうでしょうか。

rsync -apru --exclude='/var/www/html/projects/hoge/config/hoge.php' /home/teratail/projects/ /var/www/html/projects/hoge

投稿2017/01/14 00:21

bezeklik

総合スコア580

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yajin

2017/01/14 00:27

うーん。。。 だめですね・・・・。
bezeklik

2017/01/14 00:34 編集

見落としていましたが、除外先ではなく除外元を指定してください。 rsync -apru --exclude='/home/teratail/projects/hoge/config/hoge.php' /home/teratail/projects/ /var/www/html/projects/hoge
yajin

2017/01/14 01:15

vagrantが重くなり返信に時間がかかってしまいました。 フルパス指定ではだめみたいですね。 rsync -apru --exclude='hoge.php' /home/teratail/projects/ /var/www/html/projects/hoge だといけるみたいです。 ありがとうございました。
bezeklik

2017/01/14 01:25

説明が不足していましたが --exclude はパターンマッチなので、カレントディレクトリも影響すると思います。 またアスタリスクでワイルドカードを指定するのも有効です。 いずれにしろ解決したようで何よりです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問