PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : recycle mit Samba



Cieni
26.12.02, 12:11
Über das vfs ist es mit Samba möglich einen Papierkorb zu erstellen der alle gelöschten Dateien pro Freigabe aufnimmt. Es existiert auch es Perl-Script das diese Dateien nach einer einstellbaren Zeit löscht. Mit diesem Script gibt es leider ein paar Probleme.
1. In der ersten Zeile ist ein Leerzeichen zu viel, muß heißen "!/usr/bin/perl -w"
2. Wenn mehrmals eine Datei mit dem gleichen Namen gelöscht wird, werden die Dateiname wie folgt gebildet: xxxxx (Copy #1)
Das Perlscript oder besser gesagt rm kann diese Dateinamen dann aber nicht verarbeiten weil ein Lerrzeichen in dem Dateinamen darin ist. Es muß den Dateinamen in Anführungszeichen übergeben bekommen.
Meine Frage lautet nun wie kann ich das Perlscript ändern, so daß die Dateinamen in Anführungszeichen an rm übergeben werden?

Das Perlscript:
# !/usr/bin/perl -w
#
# this script looks for all files with an access date older than
# $maxage days and deletes them.
# Empty directories will be deleted afterwards
#

$dirpath = "/data/.recycle";
$maxage = 2;

# delete all old files
@a=`find $dirpath -atime +$maxage`;
foreach (@a)
{
print "deleting file: $_";
$r = `rm -f $_ 2> /dev/zero`;
}

# delete all empty directories
@a=`find $dirpath -type d | sort -r`;
foreach (@a)
{
print "deleting directory: $_";
$r = `rmdir $_ 2> /dev/zero`;
}

Cieni
26.12.02, 16:06
Da die Lerrzeichen stören, habe ich Sie aus dem Quelltext entfernt und das Modul recycle.c neu compiliert.

Nu funktioniert es

Cieni
27.12.02, 08:06
Bei Dateinamen die Lerrzeichen enthalten funktioniert das mit den herausnehmen der Lerrzeichen im Quelltext für die Verlängerung des Dateinahmen nicht.
Das heißt, ich brauchte trotzdem die Lösung für Perl , wie ich die Dateinamen mit Ausführungszeichen übergeben kann.