gfind Kommando in jail

logan54

Explorer
Joined
May 28, 2011
Messages
56
Guten Tag,
ich portiere ein script (svn_backup.sh) zum periodischen backup eines Subversion Server Jails von FreeNAS 9.3 auf Truenas, welches das gfind Kommando benutzt

echo "+++ Backing up subversion repositories" #Looks for dirs containing a file "format", that's not in the /db/ directory. #This seems to match the root of a SVN repo. YMMV repos=$(gfind $svnbasedir -name format -a \! -path '*/db/*' -printf '%h\n')

Der Aufruf des scripts erfolgt folgenden Kommando aus einem CRON Job:
iocage exec subversion bin/sh /mnt/repos/svn_backup.sh

In einem Truenas 12 jail (iocage) wird dieses Kommando nicht mehr erkannt und das script funktioniert nicht mehr.
Es erschint folgende log-Meldung

+++ Backing up subversion repositories /mnt/repos/svn_backup.sh: gfind: not found

Wie kann im jail gfind nachinstalliert werden?

Grüße
Grübler Lorenz
 
Joined
Jan 27, 2020
Messages
577
Probiers mal mit find

die man page von gfind wird nach find weitergeleitet.
 

logan54

Explorer
Joined
May 28, 2011
Messages
56
Nun bekomme ich folgende Meldung:

+++ Backing up subversion repositories find: -printf: unknown primary or operator

Ich denke ich muss irgendwie das GNU find oder gfind paket installieren

https://www.freshports.org/misc/findutils/

Wie kann ich dieses Paket im Jail nachinstallieren, denn es sollte das gfind kommando beinhalten?
 
Joined
Jan 27, 2020
Messages
577
Wie gesagt, gfind und find verweisen auf das gleiche Instruktionsset. Die Option -printf sollte auch funktionieren. Studier doch mal die man page von find.
Evtl. postet du hier mal das gesamte script, aber bitte in
Code:
-Brackets.
 

logan54

Explorer
Joined
May 28, 2011
Messages
56
Hallo, vielen Dank für die Antwort
Mein Script sieht so aus

Code:
svnbasedir="/mnt/repos"
svnfullbkdir="/mnt/svn_backup/svn_dumps" #Don't put a trailing slash!
logfile="/mnt/svn_backup/svn_dumps/log.txt"
tmpdir="/tmp"

# dont change below

#check if log file exists
touch ${logfile}
#redirect stdout and stderr to the logfile
mkdir -p $(dirname ${logfile})
exec > ${logfile}
exec 2>&1

echo "+++ Backing up subversion repositories"
#Looks for dirs containing a file "format", that's not in the /db/ directory.
#This seems to match the root of a SVN repo. YMMV
repos=$(gfind $svnbasedir -name format  -a \! -path '*/db/*'  -printf '%h\n')

#Make sure that our backup location exists
mkdir -p ${svnfullbkdir}

for repo in $repos ; do
    subpath=$(echo ${repo} | sed -e "s#${svnbasedir}/##")
    name=$(basename $subpath)
    subpath=$(dirname $subpath)
    echo "   $repo"
    lastrev=$(svnlook youngest ${repo})
   
    mkdir -p ${svnfullbkdir}/${subpath}
    svnadmin dump -q ${repo} > ${svnfullbkdir}/${subpath}/${name}.dump
    #svnadmin dump -q ${repo} | gzip > ${svnfullbkdir}/${subpath}/${name}.dump.gz
    echo  "Dumping ${repo} to  ${name}.dump.gz  \n"

   
done
 
Last edited:

logan54

Explorer
Joined
May 28, 2011
Messages
56
SOLVED:

mittels
#pkg install findutils
im jail shell konnten die gfind utils nachinstalliert werden und das Backup funktioniert wieder

Lorenz
 
Top