Probleme mit find

14/08/2010 - 20:39 von Jörg Klein | Report spam
Hallo,

ich habe diese Anfrage absichtlich in dieses Forum gesendet.
Ich bin noch ziemlich neu mit dem Gebrauch von Subversion. Als
Betriebssystem verwende ich OpenBSD. Im Internet habe ich ein Script für die
Erstellung von backups gefunden, welches ich verwenden möchtete. Als
Filesystem verwende ich fsfs. Beim Ausführen des Scriptes sh
svn-fullbackup.sh (so habe ich das Script genannt). bekomme ich folgende
Fehlermeldung:

+++ Backing up subversion repositories
find: -printf: unknown option

Entschuldigt bitte, aber ich habe ein Problem mit dem Befehl find. Es geht
aller voraussicht um diese Zeile:

repos=$(find $svnbasedir -name format -a \! -path '*/db/*' -printf '%h')

1. find kennt kein printf, also ist der erste Schritt:
repos=$(find $svnbasedir -name format -a \! -path '*/db/*' -print '%h')

'%h' und -a \! verstehe ich nicht. Wie soll ich diese Zeile umschreiben?

Würdet Ihr mir bitte helfen diese Zeile mit dem von OpenBSD verwendeten Find
lauffàhig zu machen?

Vielen Dank für die Hilfe

Joerg
______________________________________________

#!/bin/sh

# Please start configuring here
svnbasedir="/home/svn"
svnfullbkdir="/home/svn/backups/full"
logfile="/home/svn/backups/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=$(find $svnbasedir -name format -a \! -path '*/db/*' -printf '%h')

# 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 hotcopy ${repo} ${svnfullbkdir}/${name}
echo "Copy ${repo} to ${name} "
done
 

Lesen sie die antworten

#1 j
16/08/2010 - 07:51 | Warnen spam
"Klaus T. Aehlig" schrieb:

Koennte es sein, dass das script fuer die GNU Variante von find
geschrieben ist? Das -printf ist zumindest eine GNU Erweiterung.



Wobei da jemand einfach nur zu faul war, den Script portabel zu
schreiben. %h ist laut Doku der Verzeichnisname des gefundenen
Elements, das geht portabel so:

gfind ... -printf '%h'

=>

find ... -print | sed -e 's|/[^/][^/]*$||'

Jörg Klein schrieb:

und -a \! verstehe ich nicht



Das »-a \!« làsst du drin. Das heißt gesprochen "and not", der
Backslash schützt nur das Ausrufezeichen vor der Shell.

cheers, J"org .-.-. --... ...-- -.. . DL8DTL

http://www.sax.de/~joerg/ NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)

Ähnliche fragen