SCP and then touch .done file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting SCP and then touch .done file
# 1  
Old 04-06-2010
SCP and then touch .done file

All, I am looking to make a script and wanted to see if anyone could help out.

The script will go through the directory, put a timestamp, transfer it and then create a touch $file.done script

HEre is my initial idea, but I don't think it will work properly. Anyone able to help me refine it to do what I need it to do?
Code:
for file in /directory
          do
           mv $file $file+`date`
           scp $file user@host:/
           ssh user@host 'touch /$file.done
           done


Last edited by markdjones82; 04-06-2010 at 04:13 PM..
# 2  
Old 04-06-2010
Code:
for file in /directory
          do
           mv $file $file+`date`   # this creates a new file name with spaces, $file no 
                                         #                     longer points to a valid file
           scp $file user@host:/          # $file is no longer here it is now $file Mon April 14...
           ssh user@host "touch /$file.done"  # what happens with duplicate file names
           done


I don't know what your requirements are. I see what you are doing, so if you explain what you need not how to do it we can help.
# 3  
Old 04-06-2010
Quote:
Originally Posted by jim mcnamara
Code:
for file in /directory
          do
           mv $file $file+`date`   # this creates a new file name with spaces, $file no 
                                         #                     longer points to a valid file
           scp $file user@host:/          # $file is no longer here it is now $file Mon April 14...
           ssh user@host "touch /$file.done"  # what happens with duplicate file names
           done

I don't know what your requirements are. I see what you are doing, so if you explain what you need not how to do it we can help.
Jim, here are my requirements:
transfer all files in directory to remote server after appending date with _YYYYMM.
When file is done create a file with the same name with extension .done on the remote server
# 4  
Old 04-06-2010
I think the best way to find out is to write the code and try it on some test directory and file. Like /tmp/<user> testfile1, testfile2, etc. Then we can see if there is any issue.

Thanks.
# 5  
Old 04-06-2010
I think this is what you want:
Code:
# make an archive directory if it is not there

[[ ! -d /directory ]]  && mkdir /directory/completed
cd /directory

for file in *
 do
           [[ -d $file ]] && continue  # skip subdirectories
           scp $file user@host:/
           mv $file /directory/completed/$file_$(date "+%Y%m")
           ssh user@host "touch /$file.done"
 done

If you plan to run this script more than once on a given directory then:
You need to move the files out of /directory and off someplace where the
"for file in *" will not find them.
# 6  
Old 04-06-2010
Quote:
Originally Posted by jim mcnamara
I think this is what you want:
Code:
# make an archive directory if it is not there

[[ ! -d /directory ]]  && mkdir /directory/completed
cd /directory

for file in *
 do
        
           scp $file user@host:/
           mv $file /directory/completed/$file_$(date "+%Y%m")
           ssh user@host "touch /$file.done"
 done

If you plan to run this script more than once on a given directory then:
You need to move the files out of /directory and off someplace where the
"for file in *" will not find them.
Jim that looks close to what I need, but I actually need to change the file name with the timestamp before i transfer it over to the remote server. I suppose I will need to create a "worker" directory to do the file renames

Also, with that code would the touched file on the remote server use the local scripts variable value of $file?

---------- Post updated at 04:48 PM ---------- Previous update was at 04:29 PM ----------

how does this look????

Code:
for file in /dir/*
 do
           mv $file /archive/$file_$(date "+%Y%m")
           touch /archive/$file_$(date "+%Y%m").done
           scp /archive/$file_$(date "+%Y%m") user@host:/
           scp /archive/$file_$(date "+%Y%m").done user@host:/
done



---------- Post updated at 05:00 PM ---------- Previous update was at 04:48 PM ----------

So, the script above does everything as expected, but it doesn't put the filename at the front.

it only uses the timestamp for the name: 201004 201004.done

Any ideas why?

Last edited by markdjones82; 04-06-2010 at 07:22 PM..
# 7  
Old 04-06-2010
Most likely, it is looking for a variable named $file_

Try using ${file}_ instead.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Red Hat

Shell Script to touch a file

our requirement is that we need to create a touch file on 2 4 and 7 th working day of the each month ... If the days falls on saturday/sunday, the touch file should be created on next working day. We are currently on Red hat 6.5 (1 Reply)
Discussion started by: tradingspecial
1 Replies

2. UNIX for Dummies Questions & Answers

Using touch to create a file

I have noticed that the following command works touch subtext_geopdf_to_.x However this one does not touch subtext_/geopdf/_to_/.x How can I create such a file without making it think I supplied a path? (2 Replies)
Discussion started by: kristinu
2 Replies

3. Shell Programming and Scripting

Create a trigger file using touch

Hi, I need to create a trigger file named "start" at 4 pm daily . Once this file is created , another process would be initiated. How do i do it using touch command in unix ? My script that should have touch command shall be present in a dir /app/user/script while the trigger file should be... (2 Replies)
Discussion started by: samrat dutta
2 Replies

4. UNIX for Dummies Questions & Answers

Protect a file against touch

Afternoon, the stat command is used against a file to ascertain date created and last modification time. However a different individual if they so chose could use the touch command to alter the date created or modification time. Is there anyway to protect against this ? thanks Steve (2 Replies)
Discussion started by: sevans29
2 Replies

5. Shell Programming and Scripting

Aging file not use and touch

Hi all, Need advice from expect, below is my scripts to find the file not use and touch in storage and other directory. This scripts divide by: 1. 30 days 2. 90 days 3. 180 days 4. 1 years 5. 3 years 6. 5 years Then count total size in GB from 6 each category. Sample my... (5 Replies)
Discussion started by: sheikh76
5 Replies

6. Shell Programming and Scripting

Touch New File with First Line

I am interested in creating a new file from a KSH script where the first line is printed. I know how to create the file, but creating with a pre-defined first line is what I need help with. My code below creates the file, but how do I accomplish that and do it so that when I open that txt file... (5 Replies)
Discussion started by: royarellano
5 Replies

7. UNIX for Dummies Questions & Answers

Touch all files and subdirectories (recursive touch)

I have a folder with many subdirectories and i need to set the modified date to today for everything in it. Please help, thanks! I tried something i found online, find . -print0 | xargs -r0 touch but I got the error: xargs: illegal option -- r (5 Replies)
Discussion started by: glev2005
5 Replies

8. Shell Programming and Scripting

How to touch a file 30min ago

I know how to touch like this touch -t 199908031046 /tmp/file1 But I want to create a cron job for touch a file which 30 min ago in Solaris which haven't -mmin Can I use like this ? touch -t `date +%s` - 30 /tmp/file1 Because I want to file the file which older than 30min. Thanks, (6 Replies)
Discussion started by: kennylcn
6 Replies

9. Shell Programming and Scripting

How to empty file contents w/o rm and touch

Hi all, Can any one tell me how to empty the contents of a file in unix without using the following sequence : rm <file> ; touch <file> is there any command in unix?? is it possible through shell scripting? If so, how? -krishna (7 Replies)
Discussion started by: kris_kris
7 Replies

10. UNIX for Advanced & Expert Users

command 'touch -c file/dir'

Dear expert, what is this command touch -c filename using for? I find if execute and filename is existed, it update the date to now. If the filename is not exeisted, it don't create the file.. so what is this command using for? Thank a lot! (1 Reply)
Discussion started by: zp523444
1 Replies
Login or Register to Ask a Question