Mover arquivos antigos [RESOLVIDO]

1. Mover arquivos antigos [RESOLVIDO]

Geraldo Augusto de Oliveira Quites
geraldoquites

(usa Suse)

Enviado em 16/07/2020 - 17:58h

Olá.
Tenho um servidor Samba e nele temos uma pasta que está com muitos arquivos antigos. São arquivos que não tenho de ter backups constantes, com isso eu quero fazer uma separação dessas pastas para um arquivo morto, lembrando que essa pasta antiga deverá ter as mesmas subpastas e que tenham também as mesmas permissões.
Seria assim:
Pasta atual:
/arquivos/clientes/doc
/arquivos/clientes/doc/planilha.xls 21.12.2008
/arquivos/clientes/doc/texto.doc 12.04.2020

Após executar o script, deverá ficar assim:

/arquivos/clientes/doc
/arquivos/clientes/doc/texto.doc 12.04.2020

/antigos/clientes/doc
/antigos/clientes/doc/planilha.xls 21.12.2008

Já procurei sobre como montar esse script e até agora sem sucesso.
Usei o comando (para arquivos com mais de 1 ano) find . -type f -mtime +365
Ele mostra todos arquivos, mas não sei como fazer ele mover para uma nova pasta.
Se alguém puder ajudar-me, fico grato.

Geraldo.




  


2. MELHOR RESPOSTA

Vinicius Mello
vmmello

(usa Slackware)

Enviado em 17/07/2020 - 16:13h

Geraldo,

Segue um script de exemplo pra fazer o que você descreve:

#!/bin/bash

dir_base_origem=/arquivos
dir_base_destino=/antigos

# procura os arquivos nao modificados ha mais de 365 dias em
# $dir_base_origem e move-os para $dir_base_destino
for arquivo in $(find "$dir_base_origem" -type f -mtime +365 -print ) ; do
# determina o caminho relativo do novo arquivo
novo_caminho_relativo="${arquivo#$dir_base_origem/}"

# determina o diretorio de destino do novo arquivo
dir_dest="$dir_base_destino/${novo_caminho_relativo%/*}"

# cria o diretorio de destino caso nao exista
[[ "$novo_caminho_relativo" == */* ]] && [ ! -d "$dir_dest" ] && mkdir -p "$dir_dest"

# move o arquivo para $dir_base_destino
# (remova o 'echo' da linha abaixo pra realmente mover o arquivo)
echo mv -i "$arquivo" "$dir_dest"
done


3. Re: Mover arquivos antigos [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 16/07/2020 - 19:56h


geraldoquites escreveu:

Olá.
Tenho um servidor Samba e nele temos uma pasta que está com muitos arquivos antigos. São arquivos que não tenho de ter backups constantes, com isso eu quero fazer uma separação dessas pastas para um arquivo morto, lembrando que essa pasta antiga deverá ter as mesmas subpastas e que tenham também as mesmas permissões.
Seria assim:
Pasta atual:
/arquivos/clientes/doc
/arquivos/clientes/doc/planilha.xls 21.12.2008
/arquivos/clientes/doc/texto.doc 12.04.2020

Após executar o script, deverá ficar assim:

/arquivos/clientes/doc
/arquivos/clientes/doc/texto.doc 12.04.2020

/antigos/clientes/doc
/antigos/clientes/doc/planilha.xls 21.12.2008

Já procurei sobre como montar esse script e até agora sem sucesso.
Usei o comando (para arquivos com mais de 1 ano) find . -type f -mtime +365
Ele mostra todos arquivos, mas não sei como fazer ele mover para uma nova pasta.
Se alguém puder ajudar-me, fico grato.

Geraldo.


Boa noite Geraldo,
no nome do arquivo tem a data, como mostrado no exemplo....


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


4. Re: Mover arquivos antigos [RESOLVIDO]

Geraldo Augusto de Oliveira Quites
geraldoquites

(usa Suse)

Enviado em 17/07/2020 - 17:36h

Obrigado a todos;
Mello, fantástico seu script.
Além de montá-lo ainda fez instrução.
Que seu conhecimento seja a cada dia maior.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts