![]() |
Hallo und herzlich Willkommen aus den Vereinigten Staaten, die UNIX-und Linux-Foren! Vielen Dank für Ihren Besuch und die Teilnahme an unserem Global Community.
|
|
Google unix.com
|
|||||||
| Foren | Registrieren | Forum-Regeln | Links | Alben | FAQ | Benutzerliste | Kalender | Suche | Die heutige Beiträge | Alle Foren als gelesen markieren |
| Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier. |
Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
|
||||
| Faden | Thread Starter | Forum | Antworten | Last Post |
| rekursiven chmod, dass wirkt sich nur auf Verzeichnisse? | retrovertigo | UNIX für Fortgeschrittene und Experten | 1 | 06-22-2007 04:02 PM |
| Rekursive pid Skript | jbarnhar | Shell Programmierung und Scripting | 3 | 05-02-2007 03:14 PM |
| Problem mit Rekursive Funktion | malle | Shell Programmierung und Scripting | 4 | 02-03-2007 10:40 AM |
| Verzeichnisse Problem | yeah016 | UNIX for Dummies Questions & Answers | 2 | 07-22-2006 07:48 AM |
| grep rekursiv Verzeichnisse | jagannatha | UNIX for Dummies Questions & Answers | 8 | 07-24-2003 04:00 PM |
![]() |
|
|
LinkBack | Thread Tools | Suche diesen Thread | Rate Thread | Anzeige-Modi |
|
|
|
||||
|
Script-Problem durch rekursive Verzeichnisse Hilfe wenden Sie sich bitte
Hallo alle, ich bin auf der Suche nach einer besseren Lösung, dann die, die ich erstellt haben, für die meine Aufgabe
Die Aufgabe ist: Erstellen Sie ein automatisiertes Skript, das prüft, für Uploads in einem bestimmten Verzeichnis, und verschieben Sie sie auf einem anderen angegebenen Verzeichnis, wenn die Dateien vollständig hochgeladen. Die Dateien werden FTP'd in das angegebene Verzeichnis Mehrere FTPS könnte ausgeführt werden, so wissen, ob eine bestimmte FTP ist es schwierig für mich zu prüfen, durch die Prozess-ID Ich habe das Skript aufgeführt, kann aber sehen, dass Probleme entstehen können mit Uploads der Bäume zum Beispiel Wenn der Upload-Verzeichnis ist die folgende: Zitat:
dann shouldn; t bedeuten, dass , dass alle Datei-und Unter-Verzeichnisse unter dem Verzeichnis wird komplett hochgeladen und auch älter als das Alter Ich bin auf der Suche nach? ...... Ich hoffe, dass Sinn .... Ich glaube nicht, dass ist dann der Fall, wenn .... Ich hoffe, es ist ein besserer Weg, sich mit diesem Thema. Vielen Dank für Ihre gibt. Code:
#!/bin/bash
#
#
# This script will be used to monitor uploads to a specified directory
# and move them to another directory for downloading.
#
# Things to consider:
# 1. Was the uploaded files uploaded in a sub directory.
# 2. Are the files being uploaded complete.
# 3. Move the files to the specified directory
# with the proper permissions.
#
#
#-------------------------------------------------------------------------------#
#
# Functions
#
#-------------------------------------------------------------------------------#
calc_time() {
AGE_LAST_CHANGED=`expr ${CURRTIME} - ${FILE_LAST_CHANGED}`
if [ ${AGE_LAST_CHANGED} -lt ${ACCEPTED_AGE} ];
then
OK_TO_MOVE=N
else
OK_TO_MOVE=Y
fi
}
check_date() {
FILE_LAST_CHANGED=`stat -t ${NEWFILE} |awk '{print $13}'`
}
#-------------------------------------------------------------------------------#
#
# Vairables will go here
#
#-------------------------------------------------------------------------------#
UPUSER=up_user
DOWNUSER=down_user
#
UPPATH=/home/Private/Uploads
DOWNPATH=/home/Private/Downloads
CURRTIME=`date +%s`
ACCEPTED_AGE=300 # 5 minutes of no activity according to date modified
for f in $( ls ${UPPATH} ); do
if [ -d ${UPPATH}/${f} ];
then
#--- Directory with Subfiles In it ---#
DIR=${UPPATH}/${f}
echo "${DIR} is a Directory"
DIRDATE=`date +%Y_%m_%d_%H%M%S`
NEWDIR=${DOWNPATH}/${f}_${DIRDATE}
NEWFILE=${DIR}
check_date
calc_time
# It appears that the directory has not been changed in the allowed timeframe (ACCEPTED_AGE)
# it is ok to create a new directory in the DOWNPATH now.
# set permissions of new directory to the download user
mkdir ${NEWDIR}
# This causes a problem by leaving the original Directory present in th UPLOADS directory.
for f2 in $(ls ${UPPATH}/$f ); do
NEWFILE=${DIR}/${f2} # Set becuase of check_date function
check_date
calc_time
if [ ${OK_TO_MOVE} = "Y" ];
then
mv ${NEWFILE} ${NEWDIR}
echo "mv ${NEWFILE} ${NEWDIR} "
else
echo "File date is too new to move better wait"
fi
chown -R ${DOWNUSER}:${DOWNUSER} ${NEWDIR}
done
else
#--- File is in Main Upload directory ---#
if [ -f ${UPPATH}/$f ]; then
NEWFILE=${UPPATH}/${f}
echo "${NEWFILE} is a file"
check_date
calc_time
if [ ${OK_TO_MOVE} = "Y" ];
then
mv ${NEWFILE} ${DOWNPATH}
echo "mv ${NEWFILE} ${DOWNPATH} "
chown ${DOWNUSER}:${DOWNUSER} ${DOWNPATH}/*
else
echo "File date is too new to move better wait"
echo "next pass of cronjob should move this file"
fi
fi
fi
done
|
|
||||
|
Hallo ... Ich würde dieses Problem in PERL, Aber jetzt wollte ich, um Optionen für das wissen, wenn die Datei-Upload ist abgeschlossen ... Der übliche Weg, dies zu tun ist, dass die Person oder die Software, die nicht das Hochladen zu RENAME (ftp-Befehl REN) in ein anderes Verzeichnis in der gleichen Datei-System. Da eine RENAME (wie ein mv in die Schale) nur Änderungen Zeiger, der Prozess ist momentan, und so, wenn die Datei wird in der in-Verzeichnis auf, Sie wissen, es muss vollständig sein ....
so zum Beispiel ... .. / uploaddir / commitdir Laden Sie Dateien auf den uploaddir und wenn der Upload beendet ist, einen Befehl wie ftp> REN uploadedfile commitdir / uploadedfile Ihr Prozess Umfragen commitdir, nicht die uploaddir. Wenn eine Datei in commitdir, Sie wissen, es muss vollständig hochgeladen und geschlossen. |
|
||||
|
Quine hallo, danke für die Antwort,
Das Problem ist, dass ich haben will ich haben einen Cron-Job das Skript und das Verzeichnis, dass die Dateien werden in nicht sichtbar sind, noch durch den Uploader. Sobald die Dateien hochgeladen werden und in der Uploader nicht mehr berechtigt ist, den Zugang zu ihnen. (auch akzeptieren, für die kleinen Zeitspanne zwischen ca. Cron-Jobs. max 1-5 Minuten) A perl Lösung wäre für mich akzeptabel, akzeptieren, ich habe nur eine Code-Modul in perl in meinem Leben, Sie haben wahrscheinlich gehört es ..... "Hallo Welt" ![]() Shell Scripting Ich kann sich durch, wie Sie sehen können, durch das Skript habe ich so weit. So dass beispielsweise auch in perl würde mein Problem. Nochmals vielen Dank |
![]() |
| Lesezeichen |
| Thread Tools | Suche diesen Thread |
| Anzeige-Modi | Rate this thread |
|
|