Se o servidor remoto suportar SFTP e o cliente permitir FUSE , monte o diretório remoto sobre SSHFS . Você pode então trabalhar sem ter que se preocupar com arquivos locais versus remotos: todos serão arquivos.
mkdir ~/mnt
sshfs [email protected]:/path/to/folder ~/mnt
Agora, você precisa copiar os arquivos de propriedade de determinados usuários para o diretório ~/mnt
. Para fazer isso para todos os arquivos no diretório atual (mas não em subdiretórios):
find . -name . -o -type d -prune -o \( -user owner1 -o owner3 \) -exec cp -p {} ~/mnt \;
Para percorrer o diretório atual recursivamente e colocar todos os arquivos no diretório de destino, perguntando se há colisões de nome:
find . \( -user owner1 -o owner3 \) -exec cp -ip {} ~/mnt \;
Para percorrer o diretório atual recursivamente e reproduzir a árvore de diretórios do outro lado, você pode usar um dos seguintes:
find . \( -user owner1 -o owner3 \) -print0 | cpio -p0 ~/mnt
find . \( -user owner1 -o owner3 \) -exec pax -rw -pe {} ~/mnt \;
É mais simples se você tiver zsh, porque pode selecionar arquivos por proprietário com um qualificador glob .
cp -p -- *(uowner1,uowner3) ~/mnt # not recursive
cp -ip -- **/*(uowner1,uowner3) ~/mnt # recursive, flattened
zmv -C -Q -o-p '**/*(uowner1,uowner3)' '~/mnt/$f' # reproduce tree
Quando terminar de trabalhar com os arquivos remotos, desmonte o sistema de arquivos.
fusermount -u '/mnt
rmdir ~/mnt