Script om name aan te passen op Synology NAS

Pagina: 1
Acties:

Vraag


  • peterpijpelink
  • Registratie: Juni 2006
  • Laatst online: 18-09 08:03

peterpijpelink

07B2 - 11110110010

Topicstarter
Mijn vraag
Cloud Sync heeft enorm veel bestanden op mijn nas hernoemd. De originele bestandsnaam is een conflict file geworden waar ik niets mee kan. Echter hernoemen wil ik met een script doen en daarna weer mijn sync naar StackIP weer opstarten (eerst daar en hier op NAS opschonen).

Relevante software en hardware die ik gebruik
Synology DSM7

Wat ik al gevonden of geprobeerd heb
Een ticket aangemaakt bij Synology, echter die reageren na dagen totaal niet.. en veel gezocht online op probleemstelling. en Ik heb 2 scripts gevonden op een forum, echter weet mijn weg wel met Linux een beetje, maar ben zeker geen goeroe :) (die wonen hier toch? _/-\o_ )

Probleemstelling:

-rwxrwxrwx+ 1 admin users 520939 Aug 22 2009 PPIL3774_DiskStation_Aug-06-2004-2021_Conflict.jpg
-rwxrwxrwx+ 1 admin users 520939 Aug 22 2009 PPIL3774-fd0000_DiskStation_Aug-06-2004-2021_Conflict.jpg
-rwxrwxrwx+ 1 nasadmin users 517231 Jan 31 2019 PPIL3774-fd0000.jpg
-rwxrwxrwx+ 1 nasadmin users 517224 Jan 31 2019 PPIL3774.jpg

Ik wil die conflict bestanden met een script hernoemen, maar dat gaat niet echt goed. Script geeft errors.

Foutmelding:
/bin/mv: cannot move './Campbell River trip to Kelsey Bay/PPIL3774-fd0000_DiskStation_Aug-06-2004-2021_Conflict.jpg' to './Campbell River trip to Kelsey Bay/PPIL3774-fd0000.jpg': No such file or directory
Need to rename

/bin/mv: cannot move './Campbell River trip to Kelsey Bay/PPIL3774_DiskStation_Aug-06-2004-2021_Conflict.jpg' to './Campbell River trip to Kelsey Bay/PPIL3774.jpg': No such file or directory
Need to rename

Script 1:
#! /bin/bash ## This script will fix the file names that have been changed by Cloud Sync to include ## a conflict suffix. ## To use the script pass in the path of the directory that you want to fix files in. ## Set the name of the DiskStation as it can be used to detect the conflict suffixes.

code:
1
2
3
4
dsName="DiskStation" findPath=$1 if [ -z "$findPath" ]; then findPath="." fi find "$findPath" -name "*_$dsName_*_Conflict*" | while read -r line 
do 
filename=$(echo $line | sed -E "s/_${dsName}_.+_Conflict//g") echo "$line --> $filename" mv -n "$line" "$filename" 
done


de then in de bovenste regel geeft een foutmelding. En ellende is dat er dus een - minteken en een _ underscore in de verschillende namen zit. (lekker dat Cloud Sync van Synology... )

Script 2:

code:
1
2
3
4
5
6
find -name "*_Conflict*" | while read -r line
do
filename=$(echo $line | sed 's/_.*Conflict//g')
echo "Need to rename"
$(which mv) -n -v "$line" "$filename"
done


Begrepen dat ik moet toevoegen aan het script:
code:
1
2
!bash
shopt -s dotglob


Wie heeft er een idee waar ik een fout maak in het script? Idee is dat ik dit op mijn gehele NAS laat lopen. Mijn StackIP sync staat nu uit, die zal ik opnieuw moeten maken denk ik. Ik wil dit laten draaien op mijn NAS en dat gaat wel een dag duren op deze manier om alles goed terug te hernoemen... Dus een script wat goed draait is erg welkom!

Alle hulp is welkom! Alvast bedankt voor meedenken _/-\o_

[ Voor 2% gewijzigd door peterpijpelink op 12-08-2021 08:23 . Reden: ticket Synology toegevoegd ]

07B2 - http://pvoutput.org/list.jsp?userid=22724 [Zonneboiler + 38 zonnepanelen, Warmtepomp 11.2 Ecodan + Daikin Ururu airco] Van gas los sinds 07-2019 - Goede doel Oekraine ondersteunen? zie blog: https://ritvanjeleven.blogspot.com

Alle reacties


Acties:
  • +1 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 15:20
In regel 3 missen de aanhalingstekens om $line. Dan wordt die string gesplitst bij spaties, tabs, enz. en echo plakt ze dan weer aan elkaar met steeds een spatie ertussen (ook als dat dus eerst een tab of twee of drie spaties was). Dat kan de oorzaak van die foutmelding zijn.

De foutmelding bij then in script 1 heb je niet gegeven, maar zoals dat script hier staat, lijkt er wat mis te zijn gegaan met kopiëren/plakken. Een deel staat buiten de code-tags, maar er zijn duidelijk meerdere regelovergangen weggevallen.

Je gebruikt find i.p.v. bash globbing (of het moet per ongeluk zijn door de missende aanhalingstekens; zie eerdere link), dus dotglob is niet relevant.

  • peterpijpelink
  • Registratie: Juni 2006
  • Laatst online: 18-09 08:03

peterpijpelink

07B2 - 11110110010

Topicstarter
Raynman schreef op donderdag 12 augustus 2021 @ 10:53:
In regel 3 missen de aanhalingstekens om $line. Dan wordt die string gesplitst bij spaties, tabs, enz. en echo plakt ze dan weer aan elkaar met steeds een spatie ertussen (ook als dat dus eerst een tab of twee of drie spaties was). Dat kan de oorzaak van die foutmelding zijn.

De foutmelding bij then in script 1 heb je niet gegeven, maar zoals dat script hier staat, lijkt er wat mis te zijn gegaan met kopiëren/plakken. Een deel staat buiten de code-tags, maar er zijn duidelijk meerdere regelovergangen weggevallen.

Je gebruikt find i.p.v. bash globbing (of het moet per ongeluk zijn door de missende aanhalingstekens; zie eerdere link), dus dotglob is niet relevant.
Dank voor je antwoord, ik ga de $find overal in " quotes zetten..

Oke.. het script komt van het Synology forum link en zo staat het er in de post:
I put together a shell script to fix the conflict file names in a folder. You have to log in via ssh and execute the script and pass it the folder that you want to fix.
#! /bin/bash ## This script will fix the file names that have been changed by Cloud Sync to include ## a conflict suffix. ## To use the script pass in the path of the directory that you want to fix files in. ## Set the name of the DiskStation as it can be used to detect the conflict suffixes. dsName="DiskStation" findPath=$1 if [ -z "$findPath" ]; then findPath="." fi find "$findPath" -name "*_$dsName_*_Conflict*" | while read -r line do filename=$(echo $line | sed -E "s/_${dsName}_.+_Conflict//g") echo "$line --> $filename" mv -n "$line" "$filename" done I did notice that there is a CloudSync update that came out today claiming to fix conflict files for upload only targets. Hopefully this is what we've been waiting for, but I haven't been able to confirm it yet.

07B2 - http://pvoutput.org/list.jsp?userid=22724 [Zonneboiler + 38 zonnepanelen, Warmtepomp 11.2 Ecodan + Daikin Ururu airco] Van gas los sinds 07-2019 - Goede doel Oekraine ondersteunen? zie blog: https://ritvanjeleven.blogspot.com