파일과 전체 경로를 대상 폴더에 복사해야 합니다. Linux(Red Hat/Centos)에서는 다음과 같이 쉽게 이 작업을 수행할 수 있습니다.
cp --parents /some/path/to/file /newdir
그런 다음 대상 디렉터리에 다음과 같은 내용이 표시됩니다.
/newdir/some/path/to/file
AIX 6.1에도 똑같은 기능이 필요합니다. 나는 몇 가지를 시도했지만 아직 성공하지 못했습니다. 작업을 수행하는 편리한 명령에 대한 아이디어가 있습니까?
답변1
cp
AIX 용 기본 유틸리티--parent
아시다시피 해당 옵션은 포함되어 있지 않습니다.
한 가지 옵션은 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
}
답변2
AIX용 Gnu 툴킷인 AixTools를 설치할 수 있습니다. http://www.aixtools.net/index.php/coreutils
여기에는 cp와 여러분이 알고 사랑하는 다른 모든 도구가 포함됩니다.
답변3
2단계 프로세스로 대상 디렉터리가 먼저 생성된 다음(아직 존재하지 않는 경우) 파일이 복사됩니다(성공한 경우 mkdir
).
dir=/some/path/to
mkdir -p "/newdir/$dir" && cp "$dir/file" "/newdir/$dir"
쉘 함수로서(단일 파일 복사만 처리):
cp_parents () {
source_pathname=$1
target_topdir=$2
mkdir -p "$target_topdir/${source_pathname%/*}" && cp "$source_pathname" "$target_topdir/$source_pathname"
}
그 다음에,
$ cp_parents /some/path/to/file /newdir