人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

rsync でスペース入りディレクトリ名を弾きたい。

お世話になります。
きょうは rsync でリモート・バック・アップを取るときに --exclude-from でスペースの入ったディレクトリ名を弾くのに失敗し、これを克服するにはどうすればいいかの質問です。

スクリプトから抜粋すると以下のような次第です。


backup.sh:
#!/bin/bash

NOW=`date +"%Y%m%d-%H-%M"`
LATEST=`date -v-1H +"%Y%m%d-%H-%M"`

RSYNC="/usr/bin/sudo /usr/bin/rsync"

INCLUDES="/etc/hoge.includes"
EXCLUDES="/etc/hoge.excludes"

SOURCE="/Volumes/hoge\\ HD/"
DESTINATION="/Volumes/hoge\\ HD\\ BK\\ 1/$NOW/"

rsync \
--rsync-path="$RSYNC" \
--archive \
--exclude-from=$EXCLUDES \
--numeric-ids \
--link-dest=../$LATEST $SOURCE $DESTINATION


hoge.excludes:

foo
bar\ bar


上記のように"\ "のようにスペースを指定しても、バラバラの文字列として認識してしまっているように見えます。このような場合に問題を解決するには、どうしたらよいのでしょうか?

以上、宜しくお願いします。

●質問者: 大蘇 蓮風
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● a-kuma3
●100ポイント ベストアンサー

空白を指定するズバリの方法ではありませんが、ファイル名マッチのワイルドカードが使えます。

hoge.excludes:

foo
bar?bar

ただ、これだと空白以外にもマッチしてしまいます。
もし、それが問題になる場合には、空白以外のケースを include のパターンに含めます。
パターンが "+ " で始まる行は exclude 中にあっても include パターンとして解釈されるので、例えば以下のような感じ。

hoge.excludes:

foo
bar?bar
+ bar[A-Za-z0-9]bar

参考URL: http://www.infoscience.co.jp/technical/rsync/rsync.html#exclude


大蘇 蓮風さんのコメント
ありがとうございます。なんとか、この方法で回避できました。助かりました。

2 ● JULY
●0ポイント

"--exclude-from" に指定したファイルの中身を変更できるのなら、スペースの前に「\」を入れれば OK のはずです。
Using 'rsync --exclude-from' to Exclude Files Containing Spaces - Raam Dev


大蘇 蓮風さんのコメント
質問文をちゃんと読んでらっしゃいますか?

JULYさんのコメント
すみません、最後の方を読み落としていました。あ゙ぁ....。

大蘇 蓮風さんのコメント
それなら OK です。 以後、お気をつけを。(^^)
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ