The UNIX and Linux Forums  

Go Back   UNIXおよびLinuxフォーラム > トップフォーラム > シェルプログラミングとスクリプティング
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午後

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek を搭載 Powered by Google
 
LinkBack スレッドツール このスレッドを検索 スレッドを評価 表示モード
  #1固定リンク)  
Old 2008年4月27日
robertmcol robertmcol is offline
登録ユーザー
  
 

参加日: 2008年2月
投稿数: 6
スクリプトのディレクトリを再帰的な問題のためにしてくださいヘルプ

みなさん、こんにちは、私はよりよい解決策を探していますし、私は自分のタスクを1つ作成している

の課題となっている:
アップロードのためには、指定されたディレクトリにチェックし、別の指定されたディレクトリに移動する場合は、ファイルを完全にアップロードされ、自動化スクリプトを作成します。

ファイルは、特定のディレクトリにFTP'dしている
複数のFTPSが完了しましたので、 FTPの場合は、特定のプロセスIDを知るために私がチェックすることは困難ですが実行されている


私は、下記のスクリプトの作成は、問題が発生することができるの樹のアップロードを見ることができます
例えば、
ディレクトリにアップロードしている場合は、以下の通りです:

引用:
#はls - ltR UPLOAD_DIR /
UPLOAD_DIR / :
合計4
drwxr - xr - xの4ルートルート4096 4月26日21:32 Directory1
- RWの- rを-研究- 1ルートルート0 4月26日21:31 file1.txt

UPLOAD_DIR/Directory1 :
合計8
drwxr - xr - xの2ルートルート4096 4月26日21:33 SubDir2
drwxr - xr - xの2ルートルート4096 4月26日21:32 SubDir1
- RWの- rを-研究- 1ルートルート0 4月26日21:32 dir1file1.txt

UPLOAD_DIR/Directory1/SubDir2 :
合計0
- RWの- rを-研究- 1ルートルート0 4月26日21:33 subdir2file2.txt
- RWの- rを-研究- 1ルートルート0 4月26日21:33 subdir2file1.txt

UPLOAD_DIR/Directory1/SubDir1 :
合計0
- RWの- rを-研究- 1ルートルート0 4月26日21:32 subdir1file2.txt
- RWの- rを-研究- 1ルートルート0 4月26日21:32 subdir1file1.txt
私が、あるディレクトリ上のstatコマンドの最後の日付を変更し、古い時代の私を探していますわからないです
してはいけない;トンを意味する
すべてのファイルとディレクトリの下にサブディレクトリを完全にして、年齢も私を探しています以前のアップロードされますか?
......私は希望を意味....
... ...しかし私は、事件だとは思わない

私はこの問題に対処するには良い方法です期待している。

のおかげでている。


コード:
#!/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

 

ブックマーク

スレッドツール このスレッドを検索
このスレッドを検索

高度な検索
表示モード このスレッド
このスレッド

投稿ルール
あなた ことができない。 新しいスレッドを投稿
あなた ことができない。 返信の投稿
あなた ことができない。 添付ファイルの投稿
あなた ことができない。 自分の投稿を編集

BBコード なる 〜の上に
スマイリー なる 〜の上に
[イメージ] コードは 〜の上に
HTMLコードは、 オフ
トラックバック なる 〜の上に
ピングバック なる 〜の上に
Refbacks なる 〜の上に




すべてGMT -4です。現在の時刻は 12:19午前


提供: vBulletin、著作権© 2000 - 2006、Jelsoft企業株式会社。言語翻訳による電源
vBCredits v1.4著作権© 2007 - 2008 、 PixelFXスタジオ
は、 UNIXおよびLinuxフォーラムのコンテンツ著作権© 1993 〜 2009 。すべての権利を管理しReserved.Ad RedTyger

コンテンツ関連のURLで vBSEO 3.2.0