Ver Data Criação Arquivo...

1. Ver Data Criação Arquivo...

Thiago Boeira
tcboeira

(usa Debian)

Enviado em 09/07/2021 - 16:16h

Amigos,
Diretamente... Tenho um Servidor de Repositórios, o qual também resolvi usar para disponibilizar programas para instalação e arquivos que atuam na hora que realizamos as configurações de inclusão de maquina no dominio.

Bem, minha ideia é: Em algum momento do meu processo, um Script, vá até esse local na rede e consulte se o arquivo é mais novo do que o que temos na maquina. Se sim, baixa e sobreescreve os existentes e inicia o processo com estes novos arquivos....

Para o time de suporte da empresa, que não manja de Linux, eu criei um pools de Scripts que fazem determinadas verificações, cfe o caso, que retorna os resultados os quais eles escalam os Incidentes para times superiores .... Hoje esse pools, que eu chamo carinhosamente de modulo de suporte faz isso mas de uma forma mais "braçal"... Ele executa o comando, que dispara um Script que testa rede, se rede OK, ele vai ao servidor, baixa um arquivo ZIP e analisa, na maquina local se a data de criação dele é mais novo do que o script principal. SE NÃO for, ele descarta o ZIP e vida que segue... SE FOR, ele descompacta e sobrescreve os existentes e pede reinicio do comando...

O que desejo agora é isso de uma forma mais "profissional" hehehe
Não sei se fui claro, mas estou a disposição para maiores esclarecimentos...

Muito Obrigado pela ajuda.




  


2. Re: Ver Data Criação Arquivo...

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 09/07/2021 - 17:48h


V aí se te ajuda !!!
https://www.vivaolinux.com.br/artigo/Crie-um-espelho-(mirror)-Debian-em-sua-maquina 



------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------




3. Re: Ver Data Criação Arquivo...

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 09/07/2021 - 19:02h

Boa noite.
Para ver a data de criação, faça:
sudo debugfs -R 'stat <inode>' /device/
Onde, inode é:
ls -i arquivo
Exemplo:
ls -i /media/adminq/Backup/ALL/BACKUP/COMANDOS_01.txt
131744 /media/adminq/Backup/ALL/BACKUP/COMANDOS_01.txt

Device:
df -h
Sist. Arq. Tam. Usado Disp. Uso% Montado em
/dev/sdb3 5,9G 1,3G 4,3G 23% /media/adminq/Backup
O arquivo em questão está em: /dev/sdb3
--------------------------------------------------------------------
sudo debugfs -R 'stat <131744>' /dev/sdb3
debugfs 1.44.5 (15-Dec-2018)
Inode: 131744 Type: regular Mode: 0644 Flags: 0x80000
Generation: 1564713652 Version: 0x00000000:00000001
User: 1000 Group: 1000 Project: 0 Size: 131484
File ACL: 0
Links: 1 Blockcount: 264
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x60dba634:5dbe0008 -- Tue Jun 29 20:01:08 2021
atime: 0x60e8becd:8336213c -- Fri Jul 9 18:25:33 2021
mtime: 0x60dba634:5dbe0008 -- Tue Jun 29 20:01:08 2021
crtime: 0x604ad96c:53325064 -- Fri Mar 12 00:01:00 2021
Size of extra inode fields: 32
Inode checksum: 0xf583f533
EXTENTS:
(0-32):45120-45152

Isso depende do "sistema de arquivos", em ext4 funciona

______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:

Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.

______________________________________________________________________



4. Re: Ver Data Criação Arquivo...

Thiago Boeira
tcboeira

(usa Debian)

Enviado em 12/07/2021 - 08:25h


Mauriciodez escreveu:


V aí se te ajuda !!!
https://www.vivaolinux.com.br/artigo/Crie-um-espelho-(mirror)-Debian-em-sua-maquina 



------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------



Opa, Bom Dia Mauriciodez,
Bem, eu tenho um server de repo local...
Esse talvez neste momento nem é o problema.
Problema é na terceira parte do projeto, que é como disponibilizo nele, os DEBs que eventualmente eu venha a criar ...
Mas obrigado pela ajuda...
Mais abaixo vou tentar explicar melhor minha questão,


5. Re: Ver Data Criação Arquivo...

Thiago Boeira
tcboeira

(usa Debian)

Enviado em 12/07/2021 - 08:27h


msoliver escreveu:

Boa noite.
Para ver a data de criação, faça:
sudo debugfs -R 'stat <inode>' /device/
Onde, inode é:
ls -i arquivo
Exemplo:
ls -i /media/adminq/Backup/ALL/BACKUP/COMANDOS_01.txt
131744 /media/adminq/Backup/ALL/BACKUP/COMANDOS_01.txt

Device:
df -h
Sist. Arq. Tam. Usado Disp. Uso% Montado em
/dev/sdb3 5,9G 1,3G 4,3G 23% /media/adminq/Backup
O arquivo em questão está em: /dev/sdb3
--------------------------------------------------------------------
sudo debugfs -R 'stat <131744>' /dev/sdb3
debugfs 1.44.5 (15-Dec-2018)
Inode: 131744 Type: regular Mode: 0644 Flags: 0x80000
Generation: 1564713652 Version: 0x00000000:00000001
User: 1000 Group: 1000 Project: 0 Size: 131484
File ACL: 0
Links: 1 Blockcount: 264
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x60dba634:5dbe0008 -- Tue Jun 29 20:01:08 2021
atime: 0x60e8becd:8336213c -- Fri Jul 9 18:25:33 2021
mtime: 0x60dba634:5dbe0008 -- Tue Jun 29 20:01:08 2021
crtime: 0x604ad96c:53325064 -- Fri Mar 12 00:01:00 2021
Size of extra inode fields: 32
Inode checksum: 0xf583f533
EXTENTS:
(0-32):45120-45152

Isso depende do "sistema de arquivos", em ext4 funciona

______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:

Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.

______________________________________________________________________



Obrigado pelo retorno msoliver
Contudo, além de não saber como vou diferenciar o inode dos arquivos, como os comparo, creio que não tenha me feito fazer entender...
Vou tentar explicar melhor - e até exemplificar - mais abaixo...
De qq forma muito obrigado por esta contribuição. Isso vai me dando melhores observações das possibilidades...



6. Re: Ver Data Criação Arquivo...

Thiago Boeira
tcboeira

(usa Debian)

Enviado em 12/07/2021 - 08:36h

Buenas Amigos,
Vou tentar explicar melhor...

Eu tenho um Script na maquina que, quando chamado, ele faz o seguinte:
1- Testa conectividade com a rede local, SE OK, vai ao servidor local, baixa um arquivo
2- No próprio Script, ele compara entre o que baixou e o que tem na maquina.
Caso o da maquina seja mais novo que o baixado, ele exclui o novo arquivo e vida que segue,,,
SE o da Rede for mais novo que o local, ele descompacta e sobre escreve os locais (exatamente como deve ser)

Ele baixa por wget

O que desejo, se possível:
- Que veja no próprio servidor, as propriedades do arquivo, que compare com a criação do local E SÓ BAIXE se for mais novo que o local...

*Coloquei algumas palavras em caixa alta a fim de dar enfase nelas na frase...

Vou mostrar um exemplo/trecho do meu Script...


#VARIAVEL DO CAMINHO
HOMEPACK=/CAMINHO/DOS_ARQUIVOS/NA_MAQUINA
HOMESUP=/CAMINHO/MODULO

#Baixa arquivo da Rede e salva na Pasta de Pacotes cfe variavel
sudo wget -c -P $HOMEPACK http://meu_server_local/_files/pack_suporte.tar.gz

# Verifica se arquivo baixado é mais novo ou antigo que os atuais
# COMANDO "test f1 -ot f2" verifica SE o arquivo f1 ($HOMESUP/sup.sh) é mais antigo que f2 ($HOMEPACK/pack_suporte.tar.gz)
CHE=`test $HOMESUP/sup.sh -ot $HOMEPACK/pack_suporte.tar.gz && echo "Arquivo da Rede (1) é mais novo"`

#Lê resultado da Variavel
echo $CHE

# Executar conforme condição
# SE local for IGUAL ao do local remoto, NÃO preenche variavel CHE e encerra laço, dando seguimento ao modulo de Suporte.
# SE local for mais ANTIGO do que de novo arquivo baixado, DESCOMPACTA REESCREVENDO ARQUIVOS LOCAIS

if [[ -z $CHE ]] ; then # Verificando conteúdo de VARIAVEL CHE
echo "Arquivo LOCAL é MAIS ATUAL ao de REDE" # SE FOR vazio, então indica que LOCAl é mais novo
sudo rm -r $HOMEPACK/pack_suporte.tar.gz # Apaga arquivo baixado
else
echo "Arquivo de REDE é mais novo que o LOCAL (Local é velho)" # SE LOCAL for mais antigo que da REDE, executa isso!
sudo tar -xzvf $HOMEPACK/pack_suporte.tar.gz -C $HOMESUP/
sudo touch $HOMESUP/*.*
sudo rm -r $HOMEPACK/pack_suporte.tar.gz # Apaga arquivo baixado
echo "Modulo atualizado. Saindo ..."
echo "Execute novamente"
sleep 2
exit
fi


Acho que agora me fiz entender hehehe
Mas precisando, estou on para explicar mais....

Abração e Bom Trabalho a todos...






7. Re: Ver Data Criação Arquivo...

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 12/07/2021 - 23:22h


tcboeira escreveu:

Buenas Amigos,
Vou tentar explicar melhor...

Eu tenho um Script na maquina que, quando chamado, ele faz o seguinte:
1- Testa conectividade com a rede local, SE OK, vai ao servidor local, baixa um arquivo
2- No próprio Script, ele compara entre o que baixou e o que tem na maquina.
Caso o da maquina seja mais novo que o baixado, ele exclui o novo arquivo e vida que segue,,,
SE o da Rede for mais novo que o local, ele descompacta e sobre escreve os locais (exatamente como deve ser)

Ele baixa por wget

O que desejo, se possível:
- Que veja no próprio servidor, as propriedades do arquivo, que compare com a criação do local E SÓ BAIXE se for mais novo que o local...

*Coloquei algumas palavras em caixa alta a fim de dar enfase nelas na frase...

Vou mostrar um exemplo/trecho do meu Script...


#VARIAVEL DO CAMINHO
HOMEPACK=/CAMINHO/DOS_ARQUIVOS/NA_MAQUINA
HOMESUP=/CAMINHO/MODULO

#Baixa arquivo da Rede e salva na Pasta de Pacotes cfe variavel
sudo wget -c -P $HOMEPACK http://meu_server_local/_files/pack_suporte.tar.gz

# Verifica se arquivo baixado é mais novo ou antigo que os atuais
# COMANDO "test f1 -ot f2" verifica SE o arquivo f1 ($HOMESUP/sup.sh) é mais antigo que f2 ($HOMEPACK/pack_suporte.tar.gz)
CHE=`test $HOMESUP/sup.sh -ot $HOMEPACK/pack_suporte.tar.gz && echo "Arquivo da Rede (1) é mais novo"`

#Lê resultado da Variavel
echo $CHE

# Executar conforme condição
# SE local for IGUAL ao do local remoto, NÃO preenche variavel CHE e encerra laço, dando seguimento ao modulo de Suporte.
# SE local for mais ANTIGO do que de novo arquivo baixado, DESCOMPACTA REESCREVENDO ARQUIVOS LOCAIS

if [[ -z $CHE ]] ; then # Verificando conteúdo de VARIAVEL CHE
echo "Arquivo LOCAL é MAIS ATUAL ao de REDE" # SE FOR vazio, então indica que LOCAl é mais novo
sudo rm -r $HOMEPACK/pack_suporte.tar.gz # Apaga arquivo baixado
else
echo "Arquivo de REDE é mais novo que o LOCAL (Local é velho)" # SE LOCAL for mais antigo que da REDE, executa isso!
sudo tar -xzvf $HOMEPACK/pack_suporte.tar.gz -C $HOMESUP/
sudo touch $HOMESUP/*.*
sudo rm -r $HOMEPACK/pack_suporte.tar.gz # Apaga arquivo baixado
echo "Modulo atualizado. Saindo ..."
echo "Execute novamente"
sleep 2
exit
fi


Acho que agora me fiz entender hehehe
Mas precisando, estou on para explicar mais....

Abração e Bom Trabalho a todos...

Boa noite Tcboeira, segue sugestão:
#!/bin/bash

#VARIAVEL DO CAMINHO
HOMEPACK=/CAMINHO/DOS_ARQUIVOS/NA_MAQUINA
HOMESUP=/CAMINHO/MODULO

DOWNLOAD(){
sudo wget -c -P $HOMEPACK http://meu_server_local/_files/pack_suporte.tar.gz
wait;
echo "Arquivo da REDE é mais novo que o LOCAL."
sudo tar -xzvf $HOMEPACK/pack_suporte.tar.gz -C $HOMESUP/
sudo touch $HOMESUP/*.*
sudo rm -r $HOMEPACK/pack_suporte.tar.gz
echo "Modulo atualizado. Saindo ..."
echo "Execute novamente"
sleep 2
exit
}

# stat -c %Y horário da última modificação em segundos desde Epoch
uts_LOCAL=$(stat -c %Y $HOMESUP/sup.sh)
#Conecta no servidor e "pega" o horário de modificação do arquivo. Não testei via ssh....
uts_REMOT=$(sshpass -p 'senha' ssh [email protected]_address stat -c %Y /_files/pack_suporte.tar.gz)
#Se arq local é mais antigo, faz o download
(( ${uts_LOCAL} < ${uts_REMOT} )) && { echo -e "Arquivo local é +antigo\n";DOWNLOAD; }



______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________



8. Re: Ver Data Criação Arquivo...

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 13/07/2021 - 01:03h

tcboeira escreveu:

Obrigado pelo retorno msoliver
Contudo, além de não saber como vou diferenciar o inode dos arquivos, como os comparo, creio que não tenha me feito fazer entender...
Vou tentar explicar melhor - e até exemplificar - mais abaixo...
De qq forma muito obrigado por esta contribuição. Isso vai me dando melhores observações das possibilidades...

Comparando as datas:
inodeF1=$(ls -i /arq01t|cut -d ' ' -f1)
dataF1=$(date -d"$(sudo debugfs -R 'stat <'$inodeF1'>' /dev/sdb3 2>/dev/null|awk -F" -- " '/crtime/{print $2}')" +%s)

inodeF2=$(ls -i /arq02|cut -d ' ' -f1)
dataF1=$(date -d"$(sudo debugfs -R 'stat <'$inodeF1'>' /dev/sdb3 2>/dev/null|awk -F" -- " '/crtime/{print $2}')" +%s)
(($dataF1 < $dataF2)) && echo "F1 é +antigo" || echo "F1 é +recente"

______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver



9. Re: Ver Data Criação Arquivo...

Thiago Boeira
tcboeira

(usa Debian)

Enviado em 21/07/2021 - 08:24h

Olá msoliver
Desculpe a demora!!!
Simplesmente sensacional... Muito Obrigado!

Sim, a ideia era essa mesma, teste, ajustei a minha realidade e funcionou perfeitamente...
Agora estou estudando como passar a senha na linha ou de forma segura ou que não possa ser lida. Mas isso já é outro tema...
Muito Obrigado mesmo!!!!


msoliver escreveu:


tcboeira escreveu:

Buenas Amigos,
Vou tentar explicar melhor...

Eu tenho um Script na maquina que, quando chamado, ele faz o seguinte:
1- Testa conectividade com a rede local, SE OK, vai ao servidor local, baixa um arquivo
2- No próprio Script, ele compara entre o que baixou e o que tem na maquina.
Caso o da maquina seja mais novo que o baixado, ele exclui o novo arquivo e vida que segue,,,
SE o da Rede for mais novo que o local, ele descompacta e sobre escreve os locais (exatamente como deve ser)

Ele baixa por wget

O que desejo, se possível:
- Que veja no próprio servidor, as propriedades do arquivo, que compare com a criação do local E SÓ BAIXE se for mais novo que o local...

*Coloquei algumas palavras em caixa alta a fim de dar enfase nelas na frase...

Vou mostrar um exemplo/trecho do meu Script...


#VARIAVEL DO CAMINHO
HOMEPACK=/CAMINHO/DOS_ARQUIVOS/NA_MAQUINA
HOMESUP=/CAMINHO/MODULO

#Baixa arquivo da Rede e salva na Pasta de Pacotes cfe variavel
sudo wget -c -P $HOMEPACK http://meu_server_local/_files/pack_suporte.tar.gz

# Verifica se arquivo baixado é mais novo ou antigo que os atuais
# COMANDO "test f1 -ot f2" verifica SE o arquivo f1 ($HOMESUP/sup.sh) é mais antigo que f2 ($HOMEPACK/pack_suporte.tar.gz)
CHE=`test $HOMESUP/sup.sh -ot $HOMEPACK/pack_suporte.tar.gz && echo "Arquivo da Rede (1) é mais novo"`

#Lê resultado da Variavel
echo $CHE

# Executar conforme condição
# SE local for IGUAL ao do local remoto, NÃO preenche variavel CHE e encerra laço, dando seguimento ao modulo de Suporte.
# SE local for mais ANTIGO do que de novo arquivo baixado, DESCOMPACTA REESCREVENDO ARQUIVOS LOCAIS

if [[ -z $CHE ]] ; then # Verificando conteúdo de VARIAVEL CHE
echo "Arquivo LOCAL é MAIS ATUAL ao de REDE" # SE FOR vazio, então indica que LOCAl é mais novo
sudo rm -r $HOMEPACK/pack_suporte.tar.gz # Apaga arquivo baixado
else
echo "Arquivo de REDE é mais novo que o LOCAL (Local é velho)" # SE LOCAL for mais antigo que da REDE, executa isso!
sudo tar -xzvf $HOMEPACK/pack_suporte.tar.gz -C $HOMESUP/
sudo touch $HOMESUP/*.*
sudo rm -r $HOMEPACK/pack_suporte.tar.gz # Apaga arquivo baixado
echo "Modulo atualizado. Saindo ..."
echo "Execute novamente"
sleep 2
exit
fi


Acho que agora me fiz entender hehehe
Mas precisando, estou on para explicar mais....

Abração e Bom Trabalho a todos...

Boa noite Tcboeira, segue sugestão:
#!/bin/bash

#VARIAVEL DO CAMINHO
HOMEPACK=/CAMINHO/DOS_ARQUIVOS/NA_MAQUINA
HOMESUP=/CAMINHO/MODULO

DOWNLOAD(){
sudo wget -c -P $HOMEPACK http://meu_server_local/_files/pack_suporte.tar.gz
wait;
echo "Arquivo da REDE é mais novo que o LOCAL."
sudo tar -xzvf $HOMEPACK/pack_suporte.tar.gz -C $HOMESUP/
sudo touch $HOMESUP/*.*
sudo rm -r $HOMEPACK/pack_suporte.tar.gz
echo "Modulo atualizado. Saindo ..."
echo "Execute novamente"
sleep 2
exit
}

# stat -c %Y horário da última modificação em segundos desde Epoch
uts_LOCAL=$(stat -c %Y $HOMESUP/sup.sh)
#Conecta no servidor e "pega" o horário de modificação do arquivo. Não testei via ssh....
uts_REMOT=$(sshpass -p 'senha' ssh [email protected]_address stat -c %Y /_files/pack_suporte.tar.gz)
#Se arq local é mais antigo, faz o download
(( ${uts_LOCAL} < ${uts_REMOT} )) && { echo -e "Arquivo local é +antigo\n";DOWNLOAD; }



______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________