sync_cloud.sh: update to 1.4
This commit is contained in:
parent
bb91583e34
commit
4b70abf8e0
|
@ -1,138 +0,0 @@
|
|||
#!/bin/ksh
|
||||
# v1.3
|
||||
# Script para sincronizar nube remota de dropbpox
|
||||
# Dependencias: rclone, rclonesync, dzen2
|
||||
#
|
||||
# Lista de códigos de salida
|
||||
# 0 - éxito
|
||||
# 9 - operación exitosa, pero no se transfirieron archivos
|
||||
# 10 - error temporal de sincronización
|
||||
# 11 - error por falta de conexión
|
||||
# 12 - error de dependencia
|
||||
# 13 - error no categorizado de otra manera
|
||||
#
|
||||
# Autor: Tuxliban Torvalds <o-sanchez@linuxmail.org>
|
||||
|
||||
|
||||
set -u # salir si una variable no ha sido declarada
|
||||
|
||||
|
||||
########## Verificar que las dependencias estén instaladas ##########
|
||||
|
||||
function deps {
|
||||
if ! command -v rclone >/dev/null; then
|
||||
printf '%b' "\033[31;5m[ERROR] Instale el paquete 'rclone'\033[0m\n"
|
||||
return 12
|
||||
elif ! command -v dzen2 >/dev/null; then
|
||||
printf '%b' "\033[31;5m[ERROR] Instale el paquete 'dzen2'\033[0m\n"
|
||||
return 12
|
||||
# El cliente rclone de forma nativa ya soporta le sincronización bidirecional, por esa razón
|
||||
# las siguiente líneas de código han sido comentadas.
|
||||
|
||||
# elif ! command -v rclonesync >/dev/null; then
|
||||
# printf '%b' "\033[31;5m[ERROR] No está disponible 'rclonesync' en el sistema. Clonado \
|
||||
# repositorio para instalar el ejecutable...\033[0m\n"
|
||||
# git -C /tmp clone https://github.com/cjnaz/rclonesync-V2.git --depth 1
|
||||
# [ -d "$HOME"/.local/bin ] || mkdir -p "$HOME/.local/bin"
|
||||
# cp /tmp/rclonesync-V2/rclonesync "$HOME"/.local/bin
|
||||
# export PATH="$HOME/.local/bin:$PATH"
|
||||
# return 12
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
########## Directorio para base de datos ##########
|
||||
|
||||
WORKDIR="$HOME"/.config/rclone
|
||||
TMPFILE=$(mktemp /tmp/dropbox.XXXXXXXXXX)
|
||||
|
||||
if [[ ! -f $WORKDIR/dropbox.txt ]]; then
|
||||
find "$HOME/Dropbox" -type f -exec md5sum {} \; > "$WORKDIR"/dropbox.txt
|
||||
fi
|
||||
|
||||
|
||||
########## Eliminar algún archivo residual que pudiera haber quedado ##########
|
||||
|
||||
for FILE in /tmp/dropbox*; do
|
||||
[[ -f $FILE ]] || continue
|
||||
rm "$FILE"
|
||||
done
|
||||
|
||||
|
||||
########## Sincronizar nube remota ##########
|
||||
|
||||
function check_diff {
|
||||
find "$HOME/Datos/Dropbox" -type f -exec md5sum {} \; > "$TMPFILE"
|
||||
DIFF=$(diff -q "$WORKDIR/dropbox.txt" "$TMPFILE")
|
||||
if [[ -z $DIFF ]]; then
|
||||
return 9
|
||||
fi
|
||||
}
|
||||
|
||||
# Rclone ya integra de forma nativa la sincronizacion bidireccional
|
||||
#function sync {
|
||||
# rclonesync "$HOME"/Dropbox MiDropbox: --check-access --check-filename=RCLONE_TEST \
|
||||
# --filters-file "$HOME"/.config/rclone/Filtro.txt --rclone-args --copy-links \
|
||||
# --multi-thread-streams=14 --transfers=14 >> "$HOME"/.config/rclone/log 2>&1
|
||||
#}
|
||||
|
||||
#function first_sync {
|
||||
# rclonesync "$HOME"/Dropbox MiDropbox: --first-sync --check-access --check-filename=RCLONE_TEST \
|
||||
# --filters-file "$HOME"/.config/rclone/Filtro.txt --rclone-args --copy-links \
|
||||
# --multi-thread-streams=14 --transfers=14 >> "$HOME"/.config/rclone/log 2>&1
|
||||
#}
|
||||
|
||||
function first_sync {
|
||||
/usr/bin/rclone bisync "$HOME"/Dropbox MiDropbox: --resync --check-access --check-filename=RCLONE_TEST \
|
||||
--filters-file "$HOME"/.config/rclone/Filtro.txt --remove-empty-dirs --color AUTO --copy-links \
|
||||
--multi-thread-streams=4 --transfers=8 --log-file "$HOME"/.config/rclone/dropbox.log 2>&1
|
||||
}
|
||||
|
||||
function sync {
|
||||
/usr/bin/rclone bisync "$HOME"/Dropbox MiDropbox: --check-access --check-filename=RCLONE_TEST \
|
||||
--filters-file "$HOME"/.config/rclone/Filtro.txt --remove-empty-dirs --color AUTO --copy-links \
|
||||
--multi-thread-streams=4 --transfers=8 --log-file "$HOME"/.config/rclone/dropbox.log 2>&1
|
||||
}
|
||||
|
||||
function msg {
|
||||
dzen2 -p 8 -e 'onstart=uncollapse' -fn 'JetBrains Mono:size=8:style=bold' -ta c \
|
||||
-sa c -w 260 -x 1100 -y 25 -l 1
|
||||
}
|
||||
|
||||
|
||||
if deps; then
|
||||
if check_diff; then
|
||||
if ping -A -c 3 1.1.1.1 >/dev/null; then
|
||||
if sync; then
|
||||
print "Dropbox sincronizado" | msg &
|
||||
print "Dropbox sincronizado"
|
||||
mv "$TMPFILE" "$WORKDIR/dropbox.txt"
|
||||
exit 0
|
||||
else
|
||||
first_sync
|
||||
print "Dropbox sincronizado" | msg &
|
||||
print "Dropbox sincronizado"
|
||||
exit 10
|
||||
fi
|
||||
elif [[ $(ping -A -c 3 1.1.1.1 >/dev/null) == 1 ]]; then
|
||||
printf '%s\n' "No se pudo sincronizar Dropbox" "Sin conexión a internet" | msg &
|
||||
print "No se pudo sincronizar Dropbox. Sin conexión a internet\\n"
|
||||
rm "$TMPFILE"
|
||||
exit 11
|
||||
else
|
||||
rm "$TMPFILE"
|
||||
printf '%s\n' "Ocurrieron errores" "Revisar el log" | msg &
|
||||
print "Ocurrieron errores. Revisar el log\\n"
|
||||
exit 13
|
||||
fi
|
||||
else
|
||||
rm "$TMPFILE"
|
||||
print "Operación exitosa, pero no se transfirieron archivos\\n"
|
||||
exit 9
|
||||
fi
|
||||
fi
|
||||
|
||||
print "ERROR: Dependencias no satisfechas. Este script requiere tener instalado:"
|
||||
#print "\\trclone\\n" "\\trclonesync\\n" "\\tdzen2\\n"
|
||||
print "\\trclone\\n" "\\tdzen2\\n"
|
||||
exit 12
|
|
@ -1,7 +1,8 @@
|
|||
#!/bin/sh
|
||||
# v1.3
|
||||
#
|
||||
# v1.4
|
||||
# Script para sincronizar nube remota de dropbpox
|
||||
# Dependencias: rclone, rclonesync, dzen2
|
||||
# Dependencias: rclone, dzen2, rclonesync (opcional)
|
||||
#
|
||||
# Lista de códigos de salida
|
||||
# 0 - éxito
|
||||
|
@ -21,95 +22,154 @@ set -u # salir si una variable no ha sido declarada
|
|||
########## Verificar que las dependencias estén instaladas ##########
|
||||
|
||||
deps() {
|
||||
if ! command -v rclone >/dev/null; then
|
||||
printf '%b' "\033[31;5m[ERROR] Instale el paquete 'rclone'\033[0m\n"
|
||||
return 12
|
||||
elif ! command -v dzen2 >/dev/null; then
|
||||
printf '%b' "\033[31;5m[ERROR] Instale el paquete 'dzen2'\033[0m\n"
|
||||
return 12
|
||||
elif ! command -v rclonesync >/dev/null; then
|
||||
printf '%b' "\033[31;5m[ERROR] No está disponible 'rclonesync' en el sistema. Clonado \
|
||||
repositorio para instalar el ejecutable...\033[0m\n"
|
||||
git -C /tmp clone https://github.com/cjnaz/rclonesync-V2.git --depth 1
|
||||
[ -d "$HOME/.local/bin" ] || mkdir -p "$HOME/.local/bin"
|
||||
cp /tmp/rclonesync-V2/rclonesync "$HOME"/.local/bin
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
return 12
|
||||
fi
|
||||
for cmd in rclone dzen2; do
|
||||
if ! command -v $cmd >/dev/null 2>&1; then
|
||||
printf '%b' "\033[31;5m[ERROR] '$cmd' es requerido, instale el paquete\033[0m\n"
|
||||
return 12
|
||||
fi
|
||||
done
|
||||
|
||||
# El cliente rclone de forma nativa ya soporta le sincronización bidirecional, por esa razón
|
||||
# las siguiente líneas de código han sido comentadas.
|
||||
|
||||
# if ! command -v rclonesync >/dev/null; then
|
||||
# echof '%b' "\033[31;5m[ERROR] No está disponible 'rclonesync' en el sistema. Clonado \
|
||||
# repositorio para instalar el ejecutable...\033[0m\n"
|
||||
# git -C /tmp clone https://github.com/cjnaz/rclonesync-V2.git --depth 1
|
||||
# [ -d "$HOME"/.local/bin ] || mkdir -p "$HOME/.local/bin"
|
||||
# cp /tmp/rclonesync-V2/rclonesync "$HOME"/.local/bin
|
||||
# export PATH="$HOME/.local/bin:$PATH"
|
||||
# return 12
|
||||
# fi
|
||||
}
|
||||
|
||||
|
||||
########## Directorio para base de datos ##########
|
||||
|
||||
WORKDIR="$HOME"/.config/rclone
|
||||
TMPFILE=$(mktemp /tmp/dropbox.XXXXXXXXXX)
|
||||
workdir="$HOME"/.config/rclone
|
||||
tmpfile=$(mktemp /tmp/dropbox.XXXXXXXXXX)
|
||||
|
||||
if [ ! -f "$WORKDIR/dropbox.txt" ]; then
|
||||
find "$HOME/Dropbox" -type f -exec md5sum {} \; > "$WORKDIR"/dropbox.txt
|
||||
if [ ! -f "$workdir"/dropbox.txt ]; then
|
||||
find "$HOME/Dropbox" -type f -exec md5sum {} \; > "$workdir"/dropbox.txt
|
||||
fi
|
||||
|
||||
|
||||
########## Eliminar algún archivo residual que pudiera haber quedado ##########
|
||||
|
||||
for FILE in /tmp/dropbox*; do
|
||||
[ -f "$FILE" ] || continue
|
||||
rm "$FILE"
|
||||
for _file in /tmp/dropbox*; do
|
||||
[ -f "$_file" ] || continue
|
||||
rm "$_file"
|
||||
done
|
||||
|
||||
|
||||
########## Sincronizar nube remota ##########
|
||||
|
||||
check_diff() {
|
||||
find "$HOME/Datos/Dropbox" -type f -exec md5sum {} \; > "$TMPFILE"
|
||||
DIFF=$(diff -q "$WORKDIR/dropbox.txt" "$TMPFILE")
|
||||
if [ -z "$DIFF" ]; then
|
||||
find "$HOME/Datos/Dropbox" -type f -exec md5sum {} \; > "$tmpfile"
|
||||
_diff=$(diff -q "$workdir/dropbox.txt" "$tmpfile")
|
||||
if [ -z "$_diff" ]; then
|
||||
return 9
|
||||
fi
|
||||
}
|
||||
|
||||
sync() {
|
||||
rclonesync "$HOME"/Dropbox MiDropbox: --check-access --check-filename=RCLONE_TEST \
|
||||
--filters-file "$HOME"/.config/rclone/Filtro.txt --rclone-args --copy-links \
|
||||
--multi-thread-streams=14 --transfers=14 >> "$HOME"/.config/rclone/log 2>&1
|
||||
}
|
||||
# Rclone ya integra de forma nativa la sincronizacion bidireccional
|
||||
# sync() {
|
||||
# "$HOME"/.local/bin/rclonesync "$HOME"/Dropbox MiDropbox: \
|
||||
# --check-access \
|
||||
# --check-filename=RCLONE_TEST \
|
||||
# --filters-file "$HOME"/.config/rclone/Filtro.txt \
|
||||
# --max-deletes 75 \
|
||||
# --rclone-args \
|
||||
# --copy-links \
|
||||
# --multi-thread-streams=4 \
|
||||
# --transfers=8 >> "$HOME"/.config/rclone/rclonesync.log 2>&1
|
||||
# }
|
||||
|
||||
# first_sync() {
|
||||
# "$HOME"/.local/bin/rclonesync "$HOME"/Dropbox MiDropbox: \
|
||||
# --first-sync \
|
||||
# --check-access \
|
||||
# --check-filename=RCLONE_TEST \
|
||||
# --filters-file "$HOME"/.config/rclone/Filtro.txt \
|
||||
# --max-deletes 75 \
|
||||
# --rclone-args \
|
||||
# --copy-links \
|
||||
# --multi-thread-streams=4 \
|
||||
# --transfers=8 >> "$HOME"/.config/rclone/rclonesync.log 2>&1
|
||||
# }
|
||||
|
||||
first_sync() {
|
||||
rclonesync "$HOME"/Dropbox MiDropbox: --first-sync --check-access --check-filename=RCLONE_TEST \
|
||||
--filters-file "$HOME"/.config/rclone/Filtro.txt --rclone-args --copy-links \
|
||||
--multi-thread-streams=14 --transfers=14 >> "$HOME"/.config/rclone/log 2>&1
|
||||
/usr/bin/rclone bisync "$HOME"/Dropbox MiDropbox: \
|
||||
--resync \
|
||||
--check-access \
|
||||
--check-filename=RCLONE_TEST \
|
||||
--filters-file "$HOME"/.config/rclone/Filtro.txt \
|
||||
--max-delete 75 \
|
||||
--remove-empty-dirs \
|
||||
--color AUTO \
|
||||
--copy-links \
|
||||
--multi-thread-streams=4 \
|
||||
--transfers=8 \
|
||||
--log-file "$HOME"/.config/rclone/rclone.log 2>&1
|
||||
}
|
||||
|
||||
sync() {
|
||||
/usr/bin/rclone bisync "$HOME"/Dropbox MiDropbox: \
|
||||
--check-access \
|
||||
--check-filename=RCLONE_TEST \
|
||||
--filters-file "$HOME"/.config/rclone/Filtro.txt \
|
||||
--max-delete 75 \
|
||||
--remove-empty-dirs \
|
||||
--color AUTO \
|
||||
--copy-links \
|
||||
--multi-thread-streams=4 \
|
||||
--transfers=8 \
|
||||
--log-file "$HOME"/.config/rclone/rclone.log 2>&1
|
||||
}
|
||||
|
||||
msg() {
|
||||
dzen2 -p 8 -e 'onstart=uncollapse' -fn 'JetBrains Mono:size=8:style=bold' -ta c \
|
||||
-sa c -w 260 -x 1100 -y 25 -l 1
|
||||
}
|
||||
-sa c -w 260 -x 1100 -y 25 -l 1
|
||||
}
|
||||
|
||||
|
||||
if deps; then
|
||||
if check_diff; then
|
||||
if doas ping -A -q -c 3 1.1.1.1; then
|
||||
if ping -A -q -c 3 1.1.1.1 >/dev/null; then
|
||||
if sync; then
|
||||
echo "Dropbox sincronizado" | msg &
|
||||
mv "$TMPFILE" "$WORKDIR/dropbox.txt"
|
||||
echo "Dropbox sincronizado"
|
||||
mv "$tmpfile" "$workdir/dropbox.txt"
|
||||
exit 0
|
||||
else
|
||||
first_sync
|
||||
echo "Dropbox sincronizado" | msg &
|
||||
echo "Dropbox sincronizado"
|
||||
mv "$tmpfile" "$workdir/dropbox.txt"
|
||||
exit 10
|
||||
fi
|
||||
elif [ "$(ping -A -q -c 3 1.1.1.1)" -eq 1 ]; then
|
||||
elif [ "$(ping -A -c 3 1.1.1.1 >/dev/null)" = 1 ]; then
|
||||
printf '%s\n' "No se pudo sincronizar Dropbox" "Sin conexión a internet" | msg &
|
||||
rm "$TMPFILE"
|
||||
printf '%s\n' "No se pudo sincronizar Dropbox. Sin conexión a internet"
|
||||
rm -f "$tmpfile"
|
||||
exit 11
|
||||
else
|
||||
rm "$TMPFILE"
|
||||
rm -f "$tmpfile"
|
||||
printf '%s\n' "Ocurrieron errores" "Revisar el log" | msg &
|
||||
printf '%s\n' "Ocurrieron errores. Revisar el log"
|
||||
exit 13
|
||||
fi
|
||||
else
|
||||
rm "$TMPFILE"
|
||||
rm -f "$tmpfile"
|
||||
printf '%s\n' "Operación exitosa, pero no se transfirieron archivos"
|
||||
exit 9
|
||||
fi
|
||||
fi
|
||||
|
||||
printf %s "\
|
||||
ERROR: Dependencias no satisfechas. Este script requiere tener instalado:
|
||||
rclone
|
||||
dzen2
|
||||
"
|
||||
|
||||
exit 12
|
||||
|
|
Loading…
Reference in New Issue