web-dev-qa-db-ja.com

現在のディレクトリを名前でコピーするRsync

現在のディレクトリをバックアップディレクトリにコピーしたい:

私はこのコマンドを試しましたrsync -a . ~/backup/ただし、宛先に新しいディレクトリを作成するのではなく、現在のディレクトリの内容をコピーするだけです。

宛先の端に新しいディレクトリを作成するには、ソースパスの末尾のスラッシュを回避することで実現できることを知っています。しかし、ディレクトリ名の代わりにピリオド( "。")を使用しているため、私の場合は機能しません。

Rsyncで、宛先パスに現在のディレクトリと同じ名前の新しいディレクトリを作成したいと思います。どうすればこれを達成できますか?

8
B.A.B

私はあなたのスクリプトが好きですが、必要に応じて、現在のディレクトリから直接コマンドラインで実行できます。

_rsync -a "$PWD" ~/backup/
_

またはあなたのスクリプトアプローチに似た方法で

_rsync -a "$(pwd -P)" ~/backup/
_

注:

  • パスに1つ以上のスペースが存在する場合など、現在のディレクトリを引用する必要があります。

  • パス内のシンボリックリンクの場合、pwdでオプション_-P_を指定してすべてのsymlinksを回避するphysicalパスを取得できます。コマンドの呼び出し($(pwd -P))、またはフルパスを使用して実行可能ファイルを呼び出す($(/bin/pwd))。
    確かにbuilt-inpwdが存在し、デフォルトではsymlinkedパスを示し、実行可能な_/bin/pwd_デフォルトでは、physicalパスが表示されます。

  • どちらのコマンドも、最終的なシンボリックリンクのパスのバージョンを要求されたときに、現在の作業ディレクトリを含む変数_$PWD_を参照します。 physicalパスを厳密に必要としない場合は、subshel​​lを呼び出さずに、変数_$PWD_を直接使用できます。

    _rsync -a "$PWD" ~/backup/
    _
5
Hastur

解決策を見つけました:

次のような新しいシェルスクリプトを作成しました。

current_dir=`pwd`
dir_name=`basename $current_dir`
rsync -a . ~/backup/$dir_name

これを実行すると、宛先に新しいディレクトリが作成され、現在のフォルダの内容がコピーされます。

2
B.A.B