Skip to main content

260830 - Basculement des videos de SASNEXTE vers kDrive

260830 - Basculement des vidéos de SASNEXTE vers kDrive

Objectif : libérer 694 Go sur le NAS sasnexte en déplaçant /volume1/video vers kDrive, en répliquant l'arborescence à l'identique. Jellyfin lira ensuite depuis kDrive — procédure 2, documentée sur la page 165 (14_Jellyfin).

Statut au 2026-08-30 : étapes 1 à 5 terminées. Les 694 Go sont sur kDrive, vérifiés, et Jellyfin les lit déjà. Seule l'étape 6 reste — la suppression sur le NAS — volontairement en attente.


Mesures du 2026-08-30

Le dossier video

df est trompeur : ses 4,0 To sont le volume /volume1 entier, pas le partage vidéo.

Dossier Taille
movies 163,1 Go
cinema_italie 111,0 Go
fantastique_et_SF 84,4 Go
series 83,6 Go
documentaires 60,6 Go
cinema_realisateurs 47,1 Go
culture_cuisine 31,7 Go
animes 27,7 Go
cinema_europe 24,2 Go
historiques 21,7 Go
cinema_asie 12,0 Go
spectacles 11,6 Go
palettes 8,9 Go
cinema_UK 7,3 Go
alladomanda 2,0 Go
#recycle (corbeille DSM, non transférée) 10,5 Go
Total transféré 694,55 Go — 4 044 fichiers

Seulement ~423 vidéos réelles (266 mkv, 94 mp4, 54 avi, 7 vob). Le reste est de l'habillage Jellyfin : 2 989 jpg (vignettes trickplay), 408 nfo, 170 png, 40 srt.

Autres partages du volume, pour situer

video 707 Go · Komga 552 Go · audiobooks 374 Go · music 133 Go · photo 84 Go · homes 36 Go. Le solde des 4,0 To est constitué d'@ActiveBackup, @docker et des snapshots.

Débits mesurés

Trajet Débit
NAS vers kDrive (rclone WebDAV, 1 flux) 44 Mo/s
NAS vers kDrive (3 transferts parallèles) 62 à 78 Mio/s
kDrive vers VPS 97,6 Mo/s
kDrive vers NAS 89,5 Mo/s
NAS vers VPS aujourd'hui (CIFS via WireGuard) 5,0 Mo/s
Disque local NAS (lecture) 49 à 58 Mo/s

Conséquence contre-intuitive : la bascule améliore la lecture au lieu de la dégrader. Jellyfin plafonne aujourd'hui à 5,0 Mo/s (40 Mbit/s) : suffisant pour un 1080p courant, juste pour un remux, et incompatible avec deux flux simultanés. Via kDrive, le VPS descend à 780 Mbit/s. Le goulot était le tunnel WireGuard depuis Toulon, pas kDrive.

Espace kDrive

Capacité 6,60 To · utilisé 4,21 To · libre 2,39 To. Après bascule : environ 1,69 To restants. Renouvellement de l'abonnement le 2026-09-20.


Le dossier video n'avait AUCUNE sauvegarde

Vérifié le 2026-08-30 : aucune des 4 tâches Hyper Backup (2509NEXTE, Toojux_Home, Alteris, Bckup_Vero_photos) ne mentionne video, pas de snapshot (#snapshot absent), et il ne fait pas partie des 4 dossiers de sync_kdrive_complete.sh.

Le déplacement ne fait donc pas passer de deux copies à une. Il déplace l'unique copie d'un DS220+ à deux baies sans sauvegarde vers une infrastructure redondée avec corbeille. C'est une amélioration, pas une prise de risque.

Les deux risques réellement nouveaux :

  • un rclone sync mal dirigé côté kDrive effacerait tout — le renommage du 2026-08-28 avait déjà fait voir 308 suppressions à rclone ;
  • l'abonnement kDrive se renouvelle le 20/09.

Procédure

# Étape Durée Réversible
0 Analyse de doublons NAS contre Videos_NAS 10 min oui
1 rclone copy — fait, 08:35 → 11:03 (2 h 28) 2 h 28 oui
2 rclone check --download — fait, 11:05 → 13:21, 0 différence sur 4 056 fichiers 2 h 16 oui
3 à 5 Bascule Jellyfin — faite, voir page 165 30 min oui
6 Suppression sur le NAS : 694 Go libérés, volume de 75 % à ~62 % — EN ATTENTE 5 min non

Script : /volume1/homes/SAS_NEXTE/scripts/basculement_video.sh (source de vérité dans Jux-scripts/). Journal : /volume1/homes/SAS_NEXTE/logs/basculement_video_260830.log. Verrou : /volume1/homes/SAS_NEXTE/logs/basculement_video.pid.

rclone --config /volume1/homes/SAS_NEXTE/.config/rclone/rclone.conf copy \
  /volume1/video kdrive_music:Videos_NAS/video \
  --exclude '/#recycle/**' --exclude '**/@eaDir/**' \
  --exclude '**/.DS_Store' --exclude '**/Thumbs.db' \
  --create-empty-src-dirs \
  --transfers 3 --checkers 8 --retries 3 --low-level-retries 10 \
  --stats 5m --stats-one-line -v

copy, jamais sync : la source n'est jamais modifiée par le script. La suppression est un geste manuel séparé, en étape 6.

Étape 2 — pourquoi la vérification par téléchargement est obligatoire

Le WebDAV kDrive n'expose aucun hash (rclone backend features kdrive: donne Hashes: []). Après transfert, rclone ne peut comparer que les tailles. Pour un déplacement qui se termine par une suppression de la source, c'est insuffisant : il faut rclone check --download, qui retélécharge tout et compare les empreintes calculées à la volée. 694 Go à 89,5 Mo/s = environ 2 h 10. Non négociable avant l'étape 6.


Étape 0 — résultat de l'analyse de doublons

Videos_NAS (racine kDrive) pèse 246,7 Go : Video Culture Arts et Peinture 130,80 · Video Cuisine 83,10 · Video Architecture et Urbanisme 29,38 · Video concerts 3,46.

culture_cuisine et Video Cuisine ne se recoupent pas du tout. Le NAS porte Chef's Table et Man vs Food, kDrive porte Rick Stein, Jamie Oliver, Entre les Bras. Zéro collision de nom.

Seuls 2 vrais doublons, 1,60 Go, tous deux contre Videos_NAS et non à l'intérieur du périmètre transféré :

  • palettes/De Cimabue a Giotto, les premiers maitres italiens.mp4 (0,87 Go) contre Video Culture Arts et Peinture/
  • documentaires/Justice - a Cross Universe/....avi (0,73 Go) contre Video concerts/

Décision : ils ont été transférés quand même. Ces deux fichiers appartiennent à des bibliothèques Jellyfin distinctes ; 1,6 Go ne justifiait pas de casser la réplication.


Emplacement final : Private/Videos_NAS/video/

La destination initiale SYNC-pour_VPS/Sync-SASNEXTE/video était une erreur de conception, corrigée le jour même sur remarque de Julien.

Cet espace est celui des copies miroir du NAS : quatre dossiers que sync_kdrive_complete.sh synchronise chaque jour en rclone sync --delete-during. Or video n'est pas une copie — après l'étape 6, c'est l'original, lu directement par Jellyfin. Le nom promettait une synchronisation qui n'existe pas, et surtout il tendait un piège : le jour où quelqu'un ajoute video à ce script — geste naturel vu l'emplacement — un sync depuis une source NAS vidée effacerait les 694 Go.

Le déplacement a pris 2 secondes : rclone moveto, Server side directory move succeeded, aucun octet retransféré. Le remote kDrive annonce DirMove: True — toute réorganisation de l'arborescence kDrive est donc gratuite, quelle que soit la volumétrie.

Deux fusions décidées dans la foulée

Source Destination Volume
video/series Videos_NAS/Séries (qui était vide) 399 objets, 77,8 Gio
video/culture_cuisine Videos_NAS/Video Cuisine (77,4 Gio existants) 286 objets, 29,6 Gio

Vérification de non-collision faite avant : Séries était vide, et les deux ensembles cuisine n'avaient aucun nom commun au premier niveau (Chef's table, Man VS Food d'un côté ; France, India, Globe cooker, Cuisines des Terroirs de l'autre). 126 s en tout, côté serveur.

Les comptes tombent juste : 4 056 − 399 − 286 = 3 371 objets restants dans video/, et 77,393 + 29,566 = 106,959 Gio dans Video Cuisine.

Arborescence finale

Private/Videos_NAS/            878,7 Gio, 4 781 objets   <- monté sur /mnt/nas_videos
├── Séries/                     77,8 Gio   -> /data/series
├── Video Cuisine/             107,0 Gio   -> /data/culture_cuisine
├── Video Culture Arts et Peinture/  130,8 Gio   (aucune bibliothèque)
├── Video Architecture et Urbanisme/  29,4 Gio   (aucune bibliothèque)
├── Video concerts/              3,5 Gio   (aucune bibliothèque)
└── video/                     541,6 Gio, 3 371 objets
    ├── movies, cinema_italie, fantastique_et_SF, documentaires,
    ├── cinema_realisateurs, animes, cinema_europe, historiques,
    └── cinema_asie, spectacles, palettes, cinema_UK, alladomanda

⚠ video/@eaDir subsiste (11 objets) : l'exclusion **/@eaDir/** écarte le contenu du dossier, pas le dossier lui-même, et --create-empty-src-dirs l'a recréé. Sans conséquence, mais à ne pas confondre avec un oubli.


Pièges rencontrés — à ne pas re-découvrir

  1. ps w tronque sa sortie sur DSM. Un test de vivacité ps w | grep -c a renvoyé 0 alors que le processus tournait — ce qui a conduit à lancer une seconde copie sur la même destination. Les deux ont été arrêtées par SIGTERM, sans corruption (rclone compare les tailles et réécrit tout fichier tronqué). Toujours utiliser ps -eo pid,sid,args.
  2. nohup ne suffit pas à détacher sur DSM. Utiliser setsid script.sh < /dev/null > /dev/null 2>&1 &. Un verrou par PID a été ajouté au script pour rendre le double-lancement impossible.
  3. Faux doublons .VOB de 1,07 Go. Les segments DVD-Video sont tous plafonnés à 1 073 739 776 octets : la taille identique ne prouve rien. Cinq faux positifs relevés entre un Scola du NAS et un DVD Architectures de kDrive. Même leçon que le dédoublonnage photo du 2026-08-28 — une signature faible ne fait pas un doublon.
  4. Le quota-used-bytes WebDAV de kDrive est peu fiable : il renvoie 0 pour certains dossiers pourtant pleins (il donnait 102,6 Go pour Videos_NAS, dont la taille réelle est 246,7 Go). Passer par rclone size, ou par l'API du drive pour l'espace global.
  5. df sur un partage Synology rapporte le volume entier, pas le partage. Toujours confirmer par du -sb.
  6. find -iname '*.jpg' sans exclure @eaDir fausse tout recensement (rappel de la page 285).

Pièges d'accès SSH au NAS (rappel page 285)

  • Le compte Unix est SAS_NEXTE en majuscules (uid 1026), la connexion se fait en sas_nexte.
  • Le caractère § du mot de passe ne survit pas à Git Bash puis plink. Le construire sur le VPS avec printf et les octets \xc2\xa7, puis sshpass -f /tmp/pw ssh -o NumberOfPasswordPrompts=1 sas_nexte@10.0.0.2. Sans NumberOfPasswordPrompts=1, un échec compte pour 3 auprès du blocage automatique DSM.
  • scp échoue (pas de sous-système SFTP) — transférer par ssh nas 'cat > cible' < source, ou passer par base64 -d.
  • /tmp est monté noexec : les exécutables vont sur /volume1.