Copias de seguridad

rclone sync o rclone copy: qué pasa si el origen se vacía por error

Publicado el 23 de octubre de 2026Última revisión: 23 de octubre de 20264 min de lectura

Resultado de la prueba

con el origen vacío, rclone sync dejó el destino sin ficheros y copy no borró nada; --max-delete 2 frenó el borrado a 2 de 5 ficheros y salió con código 7.

Contenido

Este artículo no lleva enlaces de afiliado.

Mucha gente usa rclone sync para "hacer la copia en la nube". Funciona hasta el día en que el origen está vacío por un error (un disco que no se monta, una ruta mal escrita). Esta prueba muestra qué pasa en ese caso y cómo limitar el daño.

Qué se probó

Prueba del 2026-10-19 con rclone v1.60.1, dos directorios locales como "nube" y ficheros sintéticos. Script completo al final del artículo. No se probaron proveedores remotos con versionado, --immutable ni --check-first.

1. Borrar un fichero en el origen

Con tres ficheros en el origen, se copian con rclone sync a un destino y con rclone copy a otro. Se borra f1.txt en el origen y se repite.

sync hace que el destino sea idéntico al origen, borrados incluidos. Esto es lo esperado, pero significa que no es una copia de seguridad: es un espejo.

2. El origen aparece vacío

Se vacía el origen y se lanza la orden.

Con sync y un origen vacío, la copia desaparece sin ningún error.

3. --backup-dir: lo borrado va a otra carpeta

rclone sync origen destino --backup-dir papelera mueve los ficheros que sync iba a borrar o sobrescribir a papelera. En la prueba, g1.txt terminó en la papelera en lugar de desaparecer. La carpeta de papelera debe estar fuera del destino y en el mismo remoto.

4. --max-delete: un límite de borrados

Con 5 ficheros en el destino y el origen vacío, rclone sync --max-delete 2 borró 2, dejó 3 y terminó con código de salida 7. Un script de copias puede detectar ese código y avisar en lugar de seguir.

Recomendación

Relacionado: restic con rclone en la nube y cifrado con rclone crypt.

Script completo

#!/bin/bash
# rclone sync vs copy: what happens to files deleted at the source, and to a source that is empty by mistake.
# Usage: test-rclone-sync-vs-copy.sh WORKDIR. Synthetic data, local directory as the "cloud".
set -e
W=$1; rm -rf "$W"; mkdir -p "$W/src" "$W/sync" "$W/copy"
for i in 1 2 3; do echo "contenido $i" > "$W/src/f$i.txt"; done
rclone sync "$W/src" "$W/sync"; rclone copy "$W/src" "$W/copy"
echo "== borro f1 en origen y repito"
rm "$W/src/f1.txt"
rclone sync "$W/src" "$W/sync"; rclone copy "$W/src" "$W/copy"
echo "sync:"; ls "$W/sync"; echo "copy:"; ls "$W/copy"
echo "== origen vaciado por error (p. ej. disco no montado)"
rm -f "$W/src"/*
echo "-- sync --dry-run"; rclone sync "$W/src" "$W/sync" --dry-run -v 2>&1 | grep -E "Skipped delete|NOTICE|Deleted" | head
echo "-- sync real"; rclone sync "$W/src" "$W/sync" 2>&1 | tail -2; echo "sync tras vaciar:"; ls "$W/sync" | wc -l
echo "-- copy real"; rclone copy "$W/src" "$W/copy"; echo "copy tras vaciar:"; ls "$W/copy" | wc -l
echo "== sync --backup-dir"
for i in 1 2; do echo "v$i" > "$W/src/g$i.txt"; done; rclone sync "$W/src" "$W/sync"
rm "$W/src/g1.txt"; rclone sync "$W/src" "$W/sync" --backup-dir "$W/papelera"
echo "papelera:"; ls "$W/papelera"
echo "== sync --max-delete 2 con 5 ficheros en destino y origen vacío"
mkdir -p "$W/m/a" "$W/m/b"; for i in 1 2 3 4 5; do echo $i > "$W/m/b/f$i"; done
set +e; rclone sync "$W/m/a" "$W/m/b" --max-delete 2 >/dev/null 2>&1; echo "código de salida: $?"; set -e
echo "ficheros que quedan en destino: $(ls "$W/m/b" | wc -l)"