No se puede extraer el archivo que está subido al servidor FTP

No se puede extraer el archivo que está subido al servidor FTP

Sistema fuente:

  • CentOS 7
  • bash shell
  • cremallera

Sistema de destino:

  • servidor FTP
  • CentOS 6.4
  • bash shell
  • abrir la cremallera

Escribí un script para archivar el archivo y enviarlo al servidor FTP usando un script de shell.

#!/bin/bash

# Declare no. of days
days=15

# Declare Source path of sql files and Destination path of backup directory
dumps=/home/applications/backup

bkpdir=/home/applications/backup/olddumps

# Find sql dumps of ets
files=($(find $dumps/*.sql -mtime +"$days"))

for file in ${files[*]}

do
# Move each file into backup dir which is 15 days old
echo "file is: $file\n";

mv $file $bkpdir

# Find the sql files and compress them

cd $bkpdir

filename=$(basename $file)

zip $bkpdir/$filename.zip $filename

# FTP Login

HOST=a.b.c.d

USER=xxxx

PASS=yyyyy

REM_DIR=/olddumps/sqlfiles

echo "Uploading file via FTP:"

ftp -in $HOST <<EOF

quote USER $USER

quote PASS $PASS

cd $REM_DIR

put $filename.zip

bye

EOF

# Remove sql files if any
rm $bkpdir/$filename

done

# Remove compressed files which are 6 months old
find $bkpdir/*.zip -type f -mtime +180 -exec rm {} \;

Ahora el problema es que el archivo comprimido en el sistema de destino no se extrae mediante unzipel comando y muestra el siguiente error:

Archivo: emt_bus-08-09-16-03-29.sql.zip

caution: zipfile comment truncated
error [emt_bus-08-09-16-03-29.sql.zip]: missing 49666528 bytes in zipfile
(attempting to process anyway)
error [emt_bus-08-09-16-03-29.sql.zip]: start of central directory not found;
zipfile corrupt.
(please check that you have transferred or created the zipfile in the
appropriate BINARY mode and that you have compiled UnZip properly)

Solía tar​​archivar, pero no tuve suerte. No extrae el archivo en el sistema de destino y muestra el siguiente error

gzip: stdin: invalid compressed data--format violated
emt_bus-08-09-16-03-29.sql
tar: Unexpected EOF in archive
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now

¿Cómo solucionar el problema?

Respuesta1

Probablemente ya tenga mensajes de error que simplemente no ve cuando ejecuta ese script.

Capture todos los resultados en un registro ejecutándolo con
script.sh > log.txt 2>&1

La última parte redirige stderr a stdout, en este caso log.txt

Probablemente lo que encontrará es que se está agotando el tiempo de espera (cuántos archivos está enviando, qué tan estable es su conexión), o tal vez que un comando que cree que espera el siguiente comando en realidad no espera en el script.

Respuesta2

Su script debería configurarse binary(después de los quotecomandos). De lo contrario, utilizará el modo texto para este script.

Si fuera interactivo, el cliente ftp que acabo de probar asumirá el modo binario. Pero no cuando no es interactivo.

Esto es lo que probé y arreglé:

#!/bin/sh
ftp -in invisible-island.net <<EOF
quote USER anonymous
quote PASS anonymous
binary
cd cproto
get cproto.tar.gz
bye
EOF

información relacionada