p {margin-right: 50px;}p {margin-left: 50px;}p { text-align: justify; }p { text-indent: 30px; } Sempre fiz o mesmo procedimento com relacao aos trabalhos feitos na faculdade: o que era produzido nos laboratorios era armazenando no meu pen-drive e este conteudo copiado para o meu computador pessoal. O problema e que as vezes eu esquecia de fazer a segunda etapa e ao longo de um semestre e certo acumular uma quantidade expressiva. Simplesmente copiar todos os trabalhos pode sobreescrever algum diretorio e assim, perder algum trabalho. A solucao e executar o script abaixo. As variaveis origem e destino representam, respectivamente, o ponto de montagem do pen-drive e o meu userspace o qual armazeno meus dados. E importante que os subdiretorios abaixo deles tenham o mesma estruturacao: $ find -maxdepth 1../laboratorio_de_hardware./Dev-Cpp 5.2.0.3 IDE Only Portable.7z./engenharia_de_software./ra_ads.txt./minicurso_C./sistemas_operacionais./ihc./php./estatistica./horario_de_aulas.odt./contabilidade O primeiro passo e fazer todo levantamento dos diretorios e arquivos da origem e destino. Em seguida, o script separa o que e comum a ambos dentro do arquivo /tmp/comum.txt e o que precisa ser copiado em /tmp/inexistente.txt. Se ha algo a ser copiado sao exibidas mensagens contabilizando quantos arquivos sao comuns, quantos serao copiados e a quantidade em kB a ser copiado. Todos os diretorios que nao existem na variavel destino (computador) sao criados pois causa um erro se tentar copiar para um diretorio que nao existe. Depois, e necessario preparar um arquivo que contenha o caminho dos arquivos que serao copiados para o HD. Para tal fim, o sed substitui o valor de $origem por $destino no arquivo /tmp/inexistente.txt. Desta forma, tudo que nao e comum ao HD e ao pen-drive esta pronto pronto para ser copiado. Se nao houver diferenca entre origem e destino, exibe a mensagem: "$origem" e "$destino" tem os mesmos arquivos.#!/bin/bashrm /tmp/*.txtorigem="/media/murilo/FUJITA/fatec"destino="/home/murilo/fatec/periodo2-1s_2013"cd "$destino" find -type f > /tmp/fatec_hd.txtcd "$origem" find -type f > /tmp/fatec_pendrive.txt# Tem arquivo no pen-drive que nao existe no HD?pen_drive_linhas=`wc -l /tmp/fatec_pendrive.txt | cut -f1 -d" "`for i in `seq $pen_drive_linhas` do pendrive_arquivo=`head -n $i /tmp/fatec_pendrive.txt | tail -n 1` grep "$pendrive_arquivo" /tmp/fatec_hd.txt if [ $? -eq 0 ] then echo "$pendrive_arquivo" >> /tmp/comum.txt else echo "$pendrive_arquivo" >> /tmp/inexistente.txt fi doneif [ -f /tmp/inexistente.txt ] then # Full path for source sed "s,^.,$origem," /tmp/inexistente.txt >> /tmp/inexistente1.txt sed 's/^/"/g' /tmp/inexistente1.txt >> /tmp/$$ sed 's/$/"/g' /tmp/$$ >> /tmp/inexistente3.txt rm /tmp/$$ inexistente=`wc -l /tmp/inexistente1.txt | cut -f1 -d" "` echo `wc -l /tmp/comum.txt | cut -f1 -d" "` arquivos comuns. echo $inexistente arquivos que estao no pen-drive e nao estao no HD. echo `wc -l /tmp/fatec_pendrive.txt | cut -f1 -d" "` no total. # Quantidade em kB a ser copiado do pen-drive para o HD for i in `seq $inexistente` do arquivo_inexistente=`head -n $i /tmp/inexistente1.txt | tail -n 1` du -m "$arquivo_inexistente" | awk '{printf "%s\n",$1}' done > /tmp/kB_arquivos.txt echo `paste -s -d"+" /tmp/kB_arquivos.txt | bc` kB a ser copiado do pen-drive para o HD sleep 2 sed "s,^,$origem," /tmp/inexistente1.txt >> /tmp/inexistente2.txt sed 's/$/"/g' /tmp/inexistente2.txt >> /tmp/inexistente3.txt # Checking for absent directories for i in `seq $inexistente` do inexistente_diretorio=`head -n $i /tmp/inexistente3.txt | tail -n 1 | sed 's/"//g'` /usr/bin/dirname "$inexistente_diretorio" done >> /tmp/inexistente_diretorio.txt