não pode copiar mais de 29 arquivos para o servidor de destino usando o shell script

1

Eu quero mover mais de 1 mil arquivos de um servidor para outro mas apenas 29 arquivos foram copiados e não podem copiar a redefinição e é o mesmo quando estou usando o SCP

#scripts for backup
#sripts prepared by dhafer [email protected]
#!/bin/bash
date=$(date +"%Y%m")
/usr/bin/expect<<EOF
  cd /home/mdsp/lcftp/templc/sag/sa/run/sa/10.157.78.40
  spawn  bash -c "/usr/bin/scp *$date*.log [email protected]:/tmp/dhafer"
  expect "Password:"
  send "Zain@123\r"
  expect eof
EOF

e o

#scripts for backup
#sripts prepared by dhafer 0592996292 [email protected]
#!/bin/bash
DATE=$(date +"%Y%m")
HOST=10.157.78.143
PORT=22
USER=root
PASSWORD=Zain@123
SOURCE_FILE=/home/mdsp/lcftp/templc/sag/sa/run/sa/10.157.78.40/*$DATE*
TARGET_DIR=/tmp/dhafer
/usr/bin/expect<<EOD
  spawn /usr/bin/sftp -o Port=$PORT $USER@$HOST
  expect "password:"
  send "$PASSWORD\r"
  expect "sftp>"
  send "put $SOURCE_FILE $TARGET_DIR\r"
  expect "sftp>"
  send "bye\r"

Você pode por favor me ajudar a verificar?

    
por Dhafer Abu Darag 10.10.2016 / 14:50

1 resposta

2

Provavelmente sua linha de comando é muito longa. Você deve executar vários comandos scp menores, por exemplo, usando xargs . Mas seu script de expectativa / senha tornaria isso um pouco difícil de codificar.

Talvez aqui você encontrasse uma solução scp "semelhante a xargs" Forneça parâmetros para scp com xargs

Ou use um canal find, tar, ssh:

find . -maxdepth 1 -name "*$date*.log" -print0 |\
    tar -czvf backup.tar.gz --null -T - |\
    ssh user@host "cd /tmp/dhafer && tar xvzf -"

Como alternativa, você pode experimentar rsync sem globalização:

rsync --include="*$date*.log" --exclude="*" ./ [email protected]:/tmp/dhafer/

Observação em qualquer caso, seria útil se você pudesse usar a autenticação de chave pública do ssh.

    
por 10.10.2016 / 15:15