04-08-2011
This should be simple, even with an ftp layer.
Do you need to worry about copying a file while being written? If so, you can detect others on the file with fuser. Can you wait on the writer to finish, near term? Are there other local readers that would confuse fuser? Can you make the files you want to move read-only, immediately once created, so implicity there are not being written?
First, both sender and recipient will cd to the head dir over the subtree in question. I like to use "find * -type f -newer /elsewhere/mark_file ! -newer /elsewhere/mark_next" and a marker file created with touch. 'touch' a new file at the start of every cycle, /elsewhere/mark_next. Then sleep a second so anything written in that second and also the next will be excluded. Sleep longer if it helps eliminate files being written. After the find and send, "mv /elsewhere/mark_next /elsewhere/mark_file" to support the next batch, seamlessly. Pipe the find to a "while read f" do loop that knows how to check for writing users and ftp the file using relative paths. If the files to be moved are read-only, test with 'if [ -w "$f" ]' and if writable, 'touch' their modify time forward so they are considered on the next pass.
Last edited by DGPickett; 04-08-2011 at 02:38 PM..
9 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
I am trying to write a recursive FTP script and have come to a point where I need to test if the file is either a normal ascii file or a directory. My question is how do I test if the file is either ascii or directory. (1 Reply)
Discussion started by: aslamg
1 Replies
2. Shell Programming and Scripting
Problem:
It will not advance to the next user in the list. It always dies right after it sends the 2/2 files from the first users dir.
$USERLIST="/export/home/mxdooley/perl_ftp/userlist";
$USER_DIR="/export/home/mxdooley/perl_ftp/homes";... (2 Replies)
Discussion started by: Optimus_P
2 Replies
3. Shell Programming and Scripting
Hi,
Am trying for a script which should delete more than 15 days older files in my current directory.Am using the below piece of code:
"find /tmp -type f -name "pattern" -mtime +15 -exec /usr/bin/ls -altr {} \;"
"find /tmp -type f -name "pattern" -mtime +15 -exec /usr/bin/rm -f {} \;"
... (9 Replies)
Discussion started by: puppala
9 Replies
4. Shell Programming and Scripting
Over the past few weeks, I saw a couple of threads requesting recursive ftp:
Copying files between 2 Unix server
ftp from NT to UNIX
I decided to try to write a script to accommodate these requests. The result is HardFeed. Here are a few examples of what it can do.
HardFeed ftpserver... (52 Replies)
Discussion started by: Perderabo
52 Replies
5. UNIX for Advanced & Expert Users
I was working on a shell script and found that the find command took too long, especially when I had to execute it multiple times. After some thought and research I came up with two functions.
fileScan()
filescan will cd into a directory and perform any operations you would like from within... (8 Replies)
Discussion started by: newreverie
8 Replies
6. UNIX for Advanced & Expert Users
Hi all,
Since my gopher server doesn't like filenames containing 2 or more consecutive dots in a filename, I'd like to do a search for them and replace them with... well, let's say underscores...
I've tried a oneliner or 2 from other posts, but they don't seem to work well with locating dots.... (3 Replies)
Discussion started by: Evert
3 Replies
7. Shell Programming and Scripting
Hello again.
Well, I need help again sooner as I thought. Now I want to search for files with a known name within all subdirs, and copy the to differently named files in the same directory.
For example if I had only one file to copy, I would just usecp fileName newFileNamebut to do this... (1 Reply)
Discussion started by: cabaciucia
1 Replies
8. Shell Programming and Scripting
Objective:
Recursively search all files under a directory for SQL statements that end with ";"
Sample input:
UPDATE table1
set col=val
UPDATE table2
set cola=vala
,colb=valb;
UPDATE table3
set col=val
Expected output:
UPDATE table2
set cola=vala
,colb=valb; (1 Reply)
Discussion started by: krishmaths
1 Replies
9. OS X (Apple)
before posting, I have tried to find my answer elsewhere. no luck.
I need to find a file buried in a folder somewhere.
Master folder has 10 sub folders.
each sub folder has folders too.
I found this but it does nothing
I am on Mac and use Applescript.
do shell script "find... (2 Replies)
Discussion started by: sbrady
2 Replies
LEARN ABOUT LINUX
shtool-move
SHTOOL-MOVE.TMP(1) GNU Portable Shell Tool SHTOOL-MOVE.TMP(1)
NAME
shtool-move - GNU shtool enhanced mv(1) replacement
SYNOPSIS
shtool move [-v|--verbose] [-t|--trace] [-e|--expand] [-p|--preserve] src-file dst-file
DESCRIPTION
This is a mv(1) style command enhanced with the ability to rename multiple files in a single operation and the ability to detect and not
touch existing equal destinations files, thus preserving timestamps.
OPTIONS
The following command line options are available.
-v, --verbose
Display some processing information.
-t, --trace
Enable the output of the essential shell commands which are executed.
-e, --expand
Expand asterisk in src to be used as ""%"n" (where n is 1,2,...) in dst-file. This is useful for renaming multiple files at once.
-p, --preserve
Detect src-file and dst-file having equal content and not touch existing destination files, thus perserving timestamps. This is useful
for applications that monitor timestamps, i.e. suppress make(1L) repeating actions for unchanged files.
EXAMPLE
# shell script
shtool move -v -e '*.txt' %1.asc
# Makefile
scanner.c: scanner.l
lex scanner.l
shtool move -t -p lex.yy.c scanner.c
HISTORY
The GNU shtool move command was originally written by Ralf S. Engelschall <rse@engelschall.com> in 1999 for GNU shtool.
SEE ALSO
shtool(1), mv(1), make(1).
18-Jul-2008 shtool 2.0.8 SHTOOL-MOVE.TMP(1)