![]() |
|
|
Googleのunix.com
|
|||||||
| シェルプログラミングとスクリプティング KSH 、 CSH 、 shに、 bashの、はPerl 、 PHPは、削除するsed 、 Awkの、他のシェルスクリプトやシェルスクリプト言語についての質問の投稿はこちら。 |
その他のUNIXおよびLinuxフォーラムトピックは参考にすること
|
||||
| スレッド | スレッドスターター | フォーラム | 返信 | 最後の投稿 |
| chmodディレクトリを再帰的に影響を及ぼすだけですか? | retrovertigo | UNIXの詳細&エキスパートのためのユーザー | 1 | 2007年6月22日 05:02午後 |
| pidを再帰的なスクリプト | jbarnhar | シェルプログラミングとスクリプティング | 3 | 2007年5月2日 04:14午後 |
| 問題を再帰的に機能 | マル | シェルプログラミングとスクリプティング | 4 | 2007年2月3日 10:40午前 |
| ディレクトリの問題 | yeah016 | UNIXのダミー質問と回答のため | 2 | 2006年7月22日 08:48午前 |
| ディレクトリを再帰的にはgrep | jagannatha | UNIXのダミー質問と回答のため | 8 | 2003年7月24日 05:00午後 |
|
|
LinkBack | スレッドツール | このスレッドを検索 | スレッドを評価 | 表示モード |
|
||||
|
スクリプトのディレクトリを再帰的な問題のためにしてくださいヘルプ
みなさん、こんにちは、私はよりよい解決策を探していますし、私は自分のタスクを1つ作成している の課題となっている: アップロードのためには、指定されたディレクトリにチェックし、別の指定されたディレクトリに移動する場合は、ファイルを完全にアップロードされ、自動化スクリプトを作成します。 ファイルは、特定のディレクトリにFTP'dしている 複数のFTPSが完了しましたので、 FTPの場合は、特定のプロセスIDを知るために私がチェックすることは困難ですが実行されている 私は、下記のスクリプトの作成は、問題が発生することができるの樹のアップロードを見ることができます 例えば、 ディレクトリにアップロードしている場合は、以下の通りです: 引用:
してはいけない;トンを意味する すべてのファイルとディレクトリの下にサブディレクトリを完全にして、年齢も私を探しています以前のアップロードされますか? ......私は希望を意味.... ... ...しかし私は、事件だとは思わない 私はこの問題に対処するには良い方法です期待している。 のおかげでている。 コード:
#!/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
|