sync_cloud: actualizado a 1.2
This commit is contained in:
parent
16cc2148d9
commit
38fb93a982
1 changed files with 48 additions and 32 deletions
|
@ -1,21 +1,35 @@
|
|||
#!/bin/sh
|
||||
## Script para sincronizar nube remota de dropbpox
|
||||
# v1.2
|
||||
# Script para sincronizar nube remota de dropbpox
|
||||
# Dependencias: rclone, rclonesync, dzen2
|
||||
#
|
||||
# Lista de códigos de salida
|
||||
# 0 - éxito
|
||||
# 1 - error de dependencia
|
||||
# 2 - operación exitosa, pero no se transfirieron archivos
|
||||
#
|
||||
# Shell: POSIX compliant
|
||||
# Autor: Tuxliban Torvalds <o-sanchez@linuxmail.org>
|
||||
|
||||
set -e # salir del script inmediatamente cuando un comando falle
|
||||
|
||||
set -u # salir si una variable no ha sido declarada
|
||||
|
||||
|
||||
########## Verificar que las dependencias estén instaladas ##########
|
||||
|
||||
if ! command -v rclone; then
|
||||
printf '%b' "\033[31;5m[ERROR] Instale el paquete 'rclone'\033[0m\n"
|
||||
elif ! command -v rclonesync; then
|
||||
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
|
||||
elif ! command -v dzen2; then
|
||||
printf '%b' "\033[31;5m[ERROR] Instale el paquete 'dzen2'\033[0m\n"
|
||||
fi
|
||||
deps() {
|
||||
if ! command -v rclone; then
|
||||
printf '%b' "\033[31;5m[ERROR] Instale el paquete 'rclone'\033[0m\n"
|
||||
return 1
|
||||
elif ! command -v rclonesync; then
|
||||
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
|
||||
elif ! command -v dzen2; then
|
||||
printf '%b' "\033[31;5m[ERROR] Instale el paquete 'dzen2'\033[0m\n"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -41,23 +55,25 @@ done
|
|||
########## Sincronizar nube remota ##########
|
||||
|
||||
check_diff() {
|
||||
find "$HOME/Dropbox" -type f -exec md5sum {} \; > /tmp/"dropbox-$(od -N4 -tu /dev/random | awk 'NR==1 {print $2} {}')".tmp
|
||||
find "$HOME/Datos/Dropbox" -type f -exec md5sum {} \; > /tmp/"dropbox-$(od -N4 -tu /dev/random | awk 'NR==1 {print $2} {}')".tmp
|
||||
DIFF=$(diff -q "$WORKDIR/dropbox.txt" "$TMPDIR"/dropbox-*.tmp | awk '{print $5}')
|
||||
if [ "$DIFF" = "differ" ]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
return 2
|
||||
fi
|
||||
}
|
||||
|
||||
sync() {
|
||||
rclonesync "$HOME"/Dropbox MiDropbox: --check-access --check-filename=RCLONE_TEST \
|
||||
--filters-file "$HOME"/.config/rclone/Filtro.txt >> "$HOME"/.config/rclone/log 2>&1
|
||||
--filters-file "$HOME"/.config/rclone/Filtro.txt --rclone-args --copy-links \
|
||||
--multi-thread-streams=14 --transfers=14 >> "$HOME"/.config/rclone/log 2>&1
|
||||
}
|
||||
|
||||
first_sync() {
|
||||
rclonesync "$HOME"/Dropbox MiDropbox: --first-sync --check-access --check-filename=RCLONE_TEST \
|
||||
--filters-file "$HOME"/.config/rclone/Filtro.txt
|
||||
--filters-file "$HOME"/.config/rclone/Filtro.txt --rclone-args --copy-links \
|
||||
--multi-thread-streams=14 --transfers=14 >> "$HOME"/.config/rclone/log 2>&1
|
||||
}
|
||||
|
||||
msg() {
|
||||
|
@ -66,23 +82,23 @@ msg() {
|
|||
}
|
||||
|
||||
|
||||
|
||||
if check_diff; then
|
||||
if doas ping -c 3 -q 1.1.1.1; then
|
||||
if sync; then
|
||||
printf '%s\n' "Dropbox sincronizado" | msg
|
||||
mv "$TMPDIR"/dropbox-*.tmp "$WORKDIR/dropbox.txt"
|
||||
else
|
||||
first_sync
|
||||
printf '%s\n' "Dropbox sincronizado" | msg
|
||||
fi
|
||||
else
|
||||
printf '%s\n' "No se pudo sincronizar Dropbox" "Sin conexión a internet" | msg
|
||||
rm "$TMPDIR"/dropbox-*.tmp
|
||||
fi
|
||||
else
|
||||
rm "$TMPDIR"/dropbox-*.tmp
|
||||
return 0
|
||||
if deps; then
|
||||
if check_diff; then
|
||||
if doas ping -c 3 -q 1.1.1.1; then
|
||||
if sync; then
|
||||
printf '%s\n' "Dropbox sincronizado" | msg &
|
||||
mv "$TMPDIR"/dropbox-*.tmp "$WORKDIR/dropbox.txt"
|
||||
else
|
||||
first_sync
|
||||
printf '%s\n' "Dropbox sincronizado" | msg &
|
||||
fi
|
||||
else
|
||||
printf '%s\n' "No se pudo sincronizar Dropbox" "Sin conexión a internet" | msg &
|
||||
rm "$TMPDIR"/dropbox-*.tmp
|
||||
fi
|
||||
else
|
||||
rm "$TMPDIR"/dropbox-*.tmp
|
||||
fi
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
|
Loading…
Reference in a new issue