Rsync e mv arquivos do subdiretório para diretorio raíz sem saber os nomes dos s

Iniciado por robsonfagundes, 01 de Maio de 2016, 17:13

tópico anterior - próximo tópico

robsonfagundes

Meus caros, estou tentando fazer um rsync e mv para sincronizar e aramazenar arquivos do subdiretório para diretorio raíz sem saber os nomes dos subdiretórios e tudo isso diariamente.
Vou explicar a minha situação...
Eu tenho um diretório raiz chamado: /Frutas/2016/5/1/ e dentro dele tenho os subdiretórios  "tipo de frutas":
Frutas/2016/5/1/banana
Frutas/2016/5/1/laranja
Frutas/2016/5/1/maça
e dentro de cada subdiretórios "tipo de frutas" eu tenho outros subdiretórios "estado" com seus arquivos, no caso: Frutas/2016/5/1/banana/verde/verde.txt
Frutas/2016/5/1/banana/madura/madura.txt
Frutas/2016/5/1/banana/podre/podre.txt

O que eu preciso, é no que durante o rsync ou até mesmo após com mv... armazenar os arquivos verde.txt, madura.txt, podre.txt  da seguinte forma: Frutas/2016/5/1/banana/verde.txt
Frutas/2016/5/1/banana/madura.txt
Frutas/2016/5/1/banana/podre.txt

Mas existe um porém... eu não sei qual será o "tipo de fruta" e nem qual dela "estado" no diretório "Frutas" no dia "2016/5/1"...
Eu tentei fazer o seguinte:

#!/bin/bash
_year="$(date +'%Y')"
_month="$(date +'%-m')"
_day="$(date +'%-d')"
sudo rsync -Cravz  /media/server-frutas/Frutas/${_year}"/"${_month}"/"${_day}"/" /home/Frutas/
sudo find /home/Frutas/ -name \*.txt -exec mv -ufv {} /home/Frutas/ \;
mas o máximo que consegui foi trazer todas os txt para  /Frutas.
Alguém poderia me dar uma ajuda gostaria de fazer isso com Rsync direto sem a necessidade do mv...
Obrigado

druidaobelix

Talvez precise conceituar o problema de uma forma diferente.

rsync é apenas um pacote que permite um backup, portanto uma simples cópia, de um lugar para outro lugar. O backup é incremental, sincroniza o que há no lugar A com o que há no lugar B, apaga neste se não existir naquele.

O que há ou deixa de haver dentro do local A não é um problema do rsync, pois é criado ou apagado por alguém ou por algum outro programa.

Então na essência é isso, tenho os locais A e B, quero copiar os conteúdos de A para B fazendo a sincronização.

Vamos lá, talvez isso resolva o que você precisa:


#!/bin/sh

rsync -r -t -v --progress --delete -l -H -s diretório_de_origem diretório_de_destino


Agora precisa adequar diretório_de_origem  e diretório_de_destino ao caso concreto, ambos precisam estar montados e acessíveis com as devidas permissões.

Evidentemente no seu exemplo o diretório de origem é /Frutas, o que há daí em diante é irrelevante para o resultado que se quer obter.
Apenas quero uma cópia integral e exata do que há em /Frutas no local B qualquer.
www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

druidaobelix

Só como um singelo exemplo de algo que usei um dia numa específica situação, apenas com o intuito de ilustrar:


#!/bin/sh

echo "backup do disco sda1 em Linux (disco C no Winvista, em ntfs) para partição de backup sdb3 (disco H no Winvista, em ntfs). Esta rotina usa o pacote rsync. O backup é incremental, sincroniza o que há em sda1 com sdb3, apaga neste se não existir naquele.
echo
echo
echo

echo "grava data e hora do início do backup"
echo "Linux Ubuntu backup - rsync" >> /media/7B39875E4B680F66/BKUP/bkup-hal9000-winvista/regdata.txt
echo "backup iniciou em:" >> /media/7B39875E4B680F66/BKUP/bkup-hal9000-winvista/regdata.txt
date >> /media/7B39875E4B680F66/BKUP/bkup-hal9000-winvista/regdata.txt
echo >> /media/7B39875E4B680F66/BKUP/bkup-hal9000-winvista/regdata.txt
echo

# copia diretório Documents
echo "copiando Documents..."
rsync -r -t -v --progress --delete -l -H -s /media/884E62CB4E62B21C/Users/User/Documents/ /media/7B39875E4B680F66/BKUP/bkup-hal9000-winvista/users/user/documents/
echo
# copia diretório Desktop
echo "copiando Desktop..."
rsync -r -t -v --progress --delete --ignore-existing -l -H -s /media/884E62CB4E62B21C/Users/User/Desktop/ /media/7B39875E4B680F66/BKUP/bkup-hal9000-winvista/users/user/desktop/
echo
# copia diretório Downloads
echo "copiando Downloads..."
rsync -r -t -v --progress --delete --ignore-existing -l -H -s /media/884E62CB4E62B21C/Users/User/Downloads/ /media/7B39875E4B680F66/BKUP/bkup-hal9000-winvista/users/user/downloads/
echo

echo "grava data e hora de término do backup"
echo "backup terminou em:" >> /media/7B39875E4B680F66/BKUP/bkup-hal9000-winvista/regdata.txt
date >> /media/7B39875E4B680F66/BKUP/bkup-hal9000-winvista/regdata.txt
echo >> /media/7B39875E4B680F66/BKUP/bkup-hal9000-winvista/regdata.txt

echo
echo
echo "Terminei o trabalho"

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.