Cada appliance tem sua própria compilação do BusyBox com diferentes conjuntos de recursos, por isso não posso ter certeza do que o seu suporta. Se bem entendi, você tem diretórios como /lost+found/#123456
, e todos os arquivos desse diretório pertencem ao mesmo usuário. Aqui está um script não testado que despacha esses diretórios para a casa do usuário. Presumo que seus nomes de usuário não contenham espaços e que os diretórios iniciais dos usuários obedeçam à convenção /home/$username
.
cd /lost+found
[ -d /root/recovered ] || mkdir /root/recovered
for d in *; do
username=$(ls -l "$d" | sed -e 's/^[^ ] *[0-9][0-9]* */' -e 's/ .*//' -e q)
if [ -d "/home/$username" ]; then
dest=/home/$username/recovered
else
homedir=/root/recovered/$username
fi
[ -d "$dest" ] || mkdir "$dest"
cp -Rp "$x" "$dest"
done
Isso é quase o que você postou, exceto que o comando awk está imprimindo o proprietário dos arquivos várias vezes. Você pode usar awk '1 {print $3}'
ou sed como acima. Se você está pegando a propriedade errada, ou você escreveu ls -ld
no comando que você executou, ou a sua descrição da situação (“todos os arquivos ausentes estão dentro desses diretórios, cada um com a data original e informações do proprietário”) está errado. Também tornei o script mais robusto, em arquivos específicos pertencentes a usuários do sistema serão copiados em /root/recovered
.
Se isso não funcionar para você, certifique-se de explicar claramente o que está errado. Copie e cole qualquer mensagem de erro ou ls
output.