Script para copiar arquivos remotos com base no nome do arquivo e na comparação de datas de seus nomes

0

Eu tenho um diretório com esses arquivos:

app_conf.jboss.app_hostname_20160913_191141.tgz app_conf.jboss.app_hostname_20160913_194047.tgz app_conf.provider.app_hostname_20160913_194044.tgz app_conf.provider.app_hostname_20160928_071002.tgz app_conf.deployments.ear.app_hostname_20160913_194047.tgz app_conf.deployments.ear.app_hostname_20160915_071005.tgz app_conf.bin.jboss_cluster.app_hostname_20160913_194044.tgz app_conf.bin.jboss_cluster.app_hostname_20160913_194047.tgz app_conf.bin.conf.app_hostname_20160913_194043.tgz app_conf.bin.conf.app_hostname_20160913_194047.tgz

Os arquivos estão variando apenas por data, pois podem existir vários arquivos com a mesma parte do nome ("string_name" _YYMMDD_HHMMSS.tgz)

Eu preciso de um script que copie apenas a última versão do arquivo, dependendo do seu tipo.

Exemplo:

string_name1_20160913_194047.tgz.

string_name1_20160913_194043.tgz.

Deve copiar apenas string_name1_20160913_194047.tgz.

E faça isso para todos os tipos de arquivos restantes ...

Por enquanto estou copiando manualmente:

scp username@host:/tmp/string_name1_20160913_194047.tgz /home/config/

Aprecie qualquer entrada sobre isso.

    
por j.lab 29.09.2016 / 19:58

1 resposta

0

com zsh :

cd /home/config && ssh user@host << \EOF | tar xpf -
zsh -c '
  cd /tmp || exit
  typeset -A seen; files=()
  for f (app_conf*_*_*.tgz(On)) {((seen[${f%_*_*}]++)) || files+=($f)}
  tar cf - $files'
EOF

Se o shell de login de user em host for zsh , você poderá simplificá-lo para:

cd /home/config && ssh user@host '
  cd /tmp || exit
  typeset -A seen; files=()
  for f (app_conf*_*_*.tgz(On)) {((seen[${f%_*_*}]++)) || files+=($f)}
  tar cf - $files' | tar xpf -

A idéia é que processemos a lista de arquivos em ordem reversa ( (On) ) e selecione o arquivo se a parte do nome do arquivo antes de _*_* não foi vista.

Os arquivos são transferidos usando tar , que também tem o benefício de transferir todos os metadados dos arquivos.

    
por 30.09.2016 / 09:01