ソースファイル:~/SCRIPTS/script
ターゲットディレクトリ:~/TMP/LAB
コマンドは次のようにする必要があります。<command> <option> ~/SCRIPTS/script ~/TMP/LAB
コマンド後の予想結果:~/TMP/LAB/SCRIPTS/script
こうしても役に立たない
<command> <option> ~/SCRIPTS/script ~/TMP/LAB/SCRIPTS/
なぜなら、ソースファイルを変更するたびにコマンドを編集する必要があるからです。デフォルトでは、作成したいターゲットではなく、ソースで見つかった構造に基づいてディレクトリを生成するコマンドが必要です。
コマンドは次のようにする必要があります。
- ~/TMP/LAB/SCRIPTS/ 生成
- ~/SCRIPTS/script をコピーしてください。
cp --parents
こうしてください。ただし、ディレクトリをコピーする場合にのみ適用されます。
install
あなたが私のためにそれを行うことができるのだろうか?それとも多分rsync
?
答え1
cp --parents
GNUがあればそれを使うことができますcp
。
bash-5.1$ tree
.
|-- SCRIPTS
| |-- otherfile
| `-- script
`-- TMP
`-- LAB
3 directories, 2 files
bash-5.1$ cp --parents SCRIPTS/script TMP/LAB/
bash-5.1$ tree
.
|-- SCRIPTS
| |-- otherfile
| `-- script
`-- TMP
`-- LAB
`-- SCRIPTS
`-- script
4 directories, 3 files
提案されているように()オプションを使用すると、rsync
次のことができます。-R
--relative
bash-5.1$ rm -r TMP/LAB/SCRIPTS/
bash-5.1$ rsync -R SCRIPTS/script TMP/LAB/
bash-5.1$ tree
.
|-- SCRIPTS
| |-- otherfile
| `-- script
`-- TMP
`-- LAB
`-- SCRIPTS
`-- script
4 directories, 3 files
どちらのバリエーションも、相対パスではなく絶対パスを~/SCRIPTS/script
ソースとして使用すると、ターゲットSCRIPTS/script
の絶対パスに対応するディレクトリが作成され、最終的にTMP/LAB/home/myself/SCRIPTS/script
。
まず、そのディレクトリをそのディレクトリを含むディレクトリに変更すると、この問題を回避できますSCRIPTS
。
答え2
cp --parents
ソースがファイルであっても親が生成されることがわかりました。