What to do when mtime doesn't work?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting What to do when mtime doesn't work?
# 8  
Old 12-17-2007
How do files appear in the directory, are they copied or moved/renamed.

If copied, then how are you going to avoid copying a half copied file?
# 9  
Old 12-17-2007
Somethine like this?

find . -type f -newer afterme.txt | cpio -dumv <new directory>
touch -t afterme.txt
# 10  
Old 12-17-2007
Quote:
Originally Posted by porter
How do files appear in the directory, are they copied or moved/renamed.

If copied, then how are you going to avoid copying a half copied file?
They're moved from a server to another server. It's the second server that I need to copy the files from.
# 11  
Old 12-17-2007
Touch the file once manually. Then after you have found the list of files touch it again.

manually:
Code:
touch my_touch_file

Then in the script:
Code:
find <dir> -newer my_touch_file > listoffiles.txt
touch my_touch_file
cpio -pdumv /somewhere/else < listoffiles.txt

or do it in the background:

Code:
find <dir> -newer my_touch_file | cpio -pdumv /somewhere/else &
touch my_touch_file
wait


Save the list fist, and then feed that into cpio, otherwise you could get a file that will arrive while you are doing the cpio and you'll never retrieve it.

Porter has a point which I was also wondering about, how can you be sure you won't get a partial? If it is longer term storage it doesn't matter since you will get them next time around, but if the files are being processed then you could end up processing an incomplete file.
# 12  
Old 12-17-2007
Quote:
Originally Posted by reborg
If it is longer term storage it doesn't matter since you will get them next time around
Not if the following happens

1. start copying the file into the directory locally

2. find picks up the file and starts copying to remote server

3. copy to remote server finishes (that was started in 2)

4. copying of the file locally finishes (that was started in 1)

5. touch occurs

so the file would be older the than the timestamp file and hence not get picked up next time.
# 13  
Old 12-17-2007
Possible but very highly unlikely if the second option above is followed, or an extension of using two touch files on a round robin and touching before find could be used that would definitely not fail.

Either way it is simpler and more efficient than comparing directory listing.
# 14  
Old 12-17-2007
Thanks for the help. I'll give the suggestions a try.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Exit 1 doesn't work

Hi tail -f $PROGPATH/NBU_pgbaserestore_$1.log | while read LOGLINE do if ] && ! ] then date "+%d.%B.%Y %H:%M:%S" echo "ERROR: NBU" echo "$LOGLINE" TAILKILL=$(pgrep -P $$ -x tail) kill -9 $TAILKILL exit 1 ... (3 Replies)
Discussion started by: kvaikla
3 Replies

2. Shell Programming and Scripting

Timeout doesn't work, please help me

#!/bin/sh trap "cleanup" TERM timeout=5 mainpid=$$ cleanup() { echo "at $i interupt" kill -9 0 } watchdog() { sleep $1 } (watchdog $timeout && kill -TERM $mainpid) & run_test() (10 Replies)
Discussion started by: yanglei_fage
10 Replies

3. Shell Programming and Scripting

-ne 0 doesn't work -le does

Hi, I am using korn shell. until ] do echo "\$# = " $# echo "$1" shift done To the above script, I passed 2 parameters and the program control doesn't enter inside "until" loop. If I change it to until ] then it does work. Why numeric comparison is not working with -ne and works... (3 Replies)
Discussion started by: ab_2010
3 Replies

4. UNIX for Dummies Questions & Answers

Why doesn't this work?

find . -name "05_scripts" -type d -exec mv -f {}/'*.aep\ Logs' {}/.LogFiles \; Returns this failure: mv: rename ./019_0120_WS_WH_gate_insideTEST/05_scripts/*.aep\ Logs to ./019_0120_WS_WH_gate_insideTEST/05_scripts/.LogFiles/*.aep\ Logs: No such file or directory I don't know why it's trying... (4 Replies)
Discussion started by: scribling
4 Replies

5. Shell Programming and Scripting

Function doesn't work

Hello, and here's my problem: I can't get my function to do what I want. When I call my function get_from_A_to_F I give it an argument $remainder. I want my function to substitute a number higher than 9 to a specific letter. If the argument is equal to 10 than it should change it to "A".... (8 Replies)
Discussion started by: linas
8 Replies

6. Shell Programming and Scripting

alias doesn't work

Hi I have put alias ll='ls -la' in .profile file but it doesn't work. On hand it works it looks like the .profile file is not beeing read. How to check whitch file is loaded? ,profile? .bash_profile? My system: SunOS mion 5.10 Generic Shell: /bin/pfksh Thanks (2 Replies)
Discussion started by: miojamo
2 Replies

7. Shell Programming and Scripting

for loop doesn't work

I have a script which uses below for loop: for (( i = 0 ; i <= 5; i++ )) do echo "Welcome $i times" done But when I run the script, it gives error message: Syntex Error : Bad for loop variable Can anyone guide to run it? Thanks in advance. (10 Replies)
Discussion started by: naw_deepak
10 Replies

8. UNIX for Dummies Questions & Answers

Script doesn't work, but commands inside work

Howdie everyone... I have a shell script RemoveFiles.sh Inside this file, it only has two commands as below: rm -f ../../reportToday/temp/* rm -f ../../report/* My problem is that when i execute this script, nothing happened. Files remained unremoved. I don't see any error message as it... (2 Replies)
Discussion started by: cheongww
2 Replies

9. UNIX for Advanced & Expert Users

chown doesn't work

Hi unix gurus, I am facing problem with chown command. I am not able to change the owner of any file in my home. It gives error "not owner", though I own the file(as ls shows). What could be the reason? Is it possible that usage chown can be disabled for users. $ $ ls -l total 2... (10 Replies)
Discussion started by: shriashishpatil
10 Replies

10. Shell Programming and Scripting

Why doesn't this work?

cat .servers | while read LINE; do ssh jason@$LINE $1 done exit 1 ./command.ksh "ls -l ~jason" Why does this ONLY iterate on the first server in the list? It's not doing the command on all the servers in the list, what am I missing? Thanks! JP (2 Replies)
Discussion started by: jpeery
2 Replies
Login or Register to Ask a Question