ファイルをコピーしてフルパスを維持します。

ファイルをコピーしてフルパスを維持します。

ファイルとフルパスをターゲットフォルダにコピーする必要があります。 Linux(Red Hat / Centos)では、次のように簡単にこれを行うことができます。

cp --parents /some/path/to/file /newdir

その後、ターゲットディレクトリに次の内容が表示されます。

/newdir/some/path/to/file

AIX 6.1にも同じ機能が必要です。私はいくつか試してみましたが、まだ成功していません。タスクを実行する便利なコマンドのアイデアはありますか?

ベストアンサー1

cpAIX 用の基本ユーティリティー--parentご存知のように、そのオプションは含まれていません。

1つのオプションはrsyncをインストールして使用することです。Linuxアプリケーション用のAIXツールボックスソフトウェアコレクション。また、(rsyncの依存関係として)popt RPMをインストールする必要があります。

その後、次を実行できます。

rsync -R /some/path/to/file /newdir/

最後に/newdir/some/path/to/file


独自のオプションとして ksh93 (配列サポート用) を使用してラッパー関数を作成することで、この動作をエミュレートできます。以下は、相対パスを使用してファイルをコピーしようとしており、オプションがサポートされていないと仮定する簡単な関数です。

relcp() {
  typeset -a sources=()
  [ "$#" -lt 2 ] && return 1
  while [ "$#" -gt 1 ]
  do
    sources+=("$1")
    shift
  done
  destination=$1

  for s in "${sources[@]}"
  do
    if [ -d "$s" ]
    then
        printf "relcp: omitting directory '%s'\n" "$s"
        continue
    fi

    sdir=$(dirname "$s")
    if [ "$sdir" != "." ] && [ ! -d "$destination/$sdir" ]
    then
      mkdir -p "$destination/$sdir"
    fi
    cp "$s" "$destination/$sdir"
  done

  unset sources s sdir
}

おすすめ記事