File copy script

Thread Tools Search this Thread
Top Forums Shell Programming and Scripting File copy script
# 8  
Old 09-25-2013
Originally Posted by kwalan
I take the file missing error log, parse it down to a simple list of files called cleanerror.txt. And run a script that looks like this to restore the files:


files=`cat cleanerror.txt`
filesdir=`sed -e 's/$file//g' cleanerror.txt`

for i in $filesdir; do
mkdir -p $i

for i in $files; do
cp "/mnt/cifs/$i" $i
chown user:group $i

Using bash (running CentOS6) but can use Perl. Wrote this just now, it seems to do what I need with some file tests even if it feels hacky (only using Perl for getting the file/directory so I don't have to sed/awk, shelling out for almost everything else).


use File::Basename;
use File::Copy;

$result = open (IN, "file.txt");
while (defined ($dataLine = <IN>)) {
        chomp ($dataLine);
        my $dir = dirname($dataLine);
        system("mkdir -p $dir");
        system("chown user:group $dir");
        my $oldPath = "/mnt/cifs" . $dataLine;
        system("chown user:group $dataLine");
        system("chmod 644 $dataLine");

I'm sorry to hear that you don't have pax.

I'm extremely surprised that the bash script above is working for you. Here is your script with a few comments added:

file='1.2699.gz' # This line does not affect the output produced by this script.
files=`cat cleanerror.txt`
filesdir=`sed -e 's/$file//g' cleanerror.txt
# Since $file is not expanded when it appears between single quotes, unless
# the string '$file' appears in some of the pathnames in cleanerror.txt, this
# line could be replaced by: filesdir="$files"
# So, both $files and $filesdir expand to your list of 5000 target files.

for i in $filesdir; do
mkdir -p $i # This will create a new directory for every target file,

for i in $files; do
cp "/mnt/cifs/$i" $i # This will add a new directory into the target file pathname.
chown user:group $i
# This above line will change the owner of the directory containing the
# target file; not the target file itself.

So, as an example, the processing of the line in cleanerror.txt:

will create a directory named:

and then copy the file:


If you are running this script as the person whose userID is the one that you want to be the owner of the files, cp will do that for you without invoking chown. (If you need it, feel free to invoke chown on the files you create and on all of the directories you create [not just the leaf directories]. Note that invoking chown 5000 times will add somewhere between several seconds and a few minutes to the run the of your script. Figuring out which directories need to be created and have their ownership changed will also make the script more complex and slower.)

If you're trying to do what I think you're trying to do, you could try something like:
while IFS='' read -r file
do      filedir="${file%/*}"
        if [ ! -d "$filedir" ]
        then    mkdir -p "$filedir"
        cp "/mnt/cifs/$file" "$file"
done < cleanerror.txt

# 9  
Old 09-25-2013
Originally Posted by kwalan
Don't have the pax utility.
That's easily remedied:
# yum install pax

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Script for File Copy

Hello All, This is my first post to I have requirement to copy multiple *.dmp files from one server to other server. I have that other server NFS filesystem mapped to source server. Dump files are so huge almost 20TB. There are around 15-20 files each of 1.1TB. I want to copy these... (6 Replies)
Discussion started by: Amit Bansode
6 Replies

2. Shell Programming and Scripting

Help with file copy script

Hello, I am still pretty new at writing shell scripts and may have bitten off more than I can chew. I am trying to write a script that figures out if a file exists (a known name) in directory a, then copy it to my selected destination, otherwise, look in directory b and check there. If it is in... (14 Replies)
Discussion started by: r34lj4k3
14 Replies

3. Shell Programming and Scripting

Shell script to copy file

Dear all, I have a database with thousands of files with the structure of name is: .............. So what I need is how to write a script that all file with contain the character "_1" will copy to "_2" For example: file name:... (7 Replies)
Discussion started by: hainguyen1402
7 Replies

4. UNIX for Dummies Questions & Answers

Script to copy file small interval file

HI Guys whenever i post a transaction , file is stored in the temp and vanishes when the transaction is compleated . the file stays for 1 sec in temp is der any solution to capture the file to another directory cp -r /tmp/ /tmp/ when i used the... (1 Reply)
Discussion started by: kalyankalyan
1 Replies

5. Shell Programming and Scripting

Match File and Copy File Script (Homework, Closed)

Can you please help on this? I am looking for the shell script which does following:- step 1: It should open the file /u/manish/input/FileIndex.dat and read line by line step 2: Once first line is read (for ex: File1), we have to find a file, that contains this matching... (4 Replies)
Discussion started by: teteguru1
4 Replies

6. UNIX for Dummies Questions & Answers

Shell script to search for text in a file and copy file

Compete noob question.... I need a script to search through a directory and find files containing text string abcde1234 for example and then copy that file with that text string to another directory help please :eek: (9 Replies)
Discussion started by: imeadows
9 Replies

7. Shell Programming and Scripting

copy file from script file to remote computer

hi, i want copy one or group of file from a computer to others, but i have some problem that do not allow me to do this. i do this by scp command like this : scp <file name> root@cpName:destinationAddress but the problem is that it do not it automatically. it means when it is connecting to... (4 Replies)
Discussion started by: MShirzadi
4 Replies

8. Shell Programming and Scripting

Script to capture new lines in a file and copy it to new file

Hi All, I have a file that gives me new line/output every 5 minutes. I need to create a script that capture new line/output besides "IN CRON_STATUS", in this case the new output is "begin ------ - -----------". I want this script to capture the line starting from "begin ------... (0 Replies)
Discussion started by: fara_aris
0 Replies

9. Shell Programming and Scripting

Script look for file ,sort and copy to other direcotry

Hi I am in a situation to write a shell script that looks for the flat files continuosly and if files exists in that directory sort on the files and get the latest file(File comes with timestamp at the end) and copy the latest file to the other directory and again copy the next one to the same... (0 Replies)
Discussion started by: reddi22
0 Replies

10. Shell Programming and Scripting

Help:Copy file from one to other using script

Hi Frineds, Through my DTS process I am generating one file at one directory like, /sqlsrvr_demo/dts/put/transaction_fact.csv now I want to copy this files(only when the files size is greater than 0 kb) to some other directory like /sqlsrvr_demo/dts/get/transaction_fact.csv Can... (2 Replies)
Discussion started by: sunnysunny
2 Replies
Login or Register to Ask a Question

Featured Tech Videos