O utilitário cp
nativo do AIX não inclua a opção --parent
, como você descobriu.
Uma opção seria instalar e usar o rsync a partir do AIX Toolbox para aplicativos do Linux coleção de software. Você também precisa instalar o RPM popt (como uma dependência do rsync).
Então você pode executar:
rsync -R /some/path/to/file /newdir/
Para terminar com /newdir/some/path/to/file
.
Como uma opção caseira, você poderia escrever uma função wrapper usando ksh93 (para o suporte à matriz) para emular o comportamento. Abaixo está uma função básica como exemplo; Ele supõe que você deseja copiar arquivos com caminhos relativos e não oferece suporte a nenhuma opção:
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
}