にディスクをマウントしました/data
。現時点では空です。
レベル 4 である必要があるファイルとして、つまり、、およびが存在しない場合に、をrsync
実行する必要があります。mkdir -p
mkdir
/data/dir_1/dir_2/dir_3/filename
dir_1
dir_2
dir_3
必要なサブディレクトリを手動で作成すると、次のコマンドを使用して rsync を実行できます。
rsync -avz source_diretory/ /data/dir_1/dir_2/dir_3
しかし、サブディレクトリを作成しないと、このコマンドはエラーをスローします。
mkdir: cannot create directory ‘/data/dir_1/dir_2/dir_3/’: No such file or directory
Google で検索したり、rsync のマニュアル ページを読んだり、使用してみたりしました-r
-R
が、うまくいきませんでした。
rsync
次のようなことを実行できますかmkdir -p
、それとも範囲外ですか?
答え1
rsync
コマンドはディレクトリ ツリーを作成しないので、次のコマンドを実行してこれを実現できます。
mkdir -p /data/dir_1/dir_2/dir_3
rsync
命令または使用の前に--rsync パスオプション:
--rsync-path=PROGRAM これを使用して、rsync を起動するためにリモート マシンで実行するプログラムを指定します。
コマンドは次のようになります:
rsync -avz source_diretory/ --rsync-path="mkdir -p /data/dir_1/dir_2/dir_3 && rsync" /data/dir_1/dir_2/dir_3
ここに便利なリンク。
答え2
Linux で rsync の宛先パスを作成するより簡単な方法は、特殊変数「$_」を使用することです。(OSX でも同じだと思いますが、確認できません)。
'$_' は、前に実行されたコマンドの最後の引数の値を保持します。したがって、この質問に対する回答は次のようになります。
mkdir -p /data/dir_1/dir_2/dir_3 && rsync -avz source_directory/ $_