Same files to multiple drives


#1

Hi,
I have 7 new pictures, and 4 thumbdrives. In the thumbdrives I have a folder called Month/Photo/Pictures I would like to delete everything inside the Pictures folder (for all 4 thumbdrives) while leaving everything else intact, and then copy the 7 new pictures to the Pictures Folder for all 4 drives simultaneously… What would be the fastest easies way to accomplish this?


#2

A shell script might be the quickest and easiest method. I haven’t written any in a while so I might not be the best person to write one up for you that’s guaranteed to work.


#3

Probably two commands should do it. One to erase, and one to move the files. It would be interesting to do it in a shell script, but how would I know what the name of the newly inserted drives is?


#4

Commands would work, I’m sure, I just usually go for something quick and reusable. I did the same with updating/upgrading FreeBSD, ports and packages. One command instead of a few each time I wanted to update. Then set it to auto run at log in and life is good.

I haven’t written any she’ll scripts since I’ve switched from Vanilla to TOS but I know I could always assume they were found at /dev/da*. Could write it to start at /dev/da0 (or wherever they are mounted) and write the files then move to /dev/da1, etc until it tells you that one doesn’t exist.

That’s at least where I’d start working on it and see how it goes.


#5

I plugged three of them in and they are called da0, da1, ada1s1 every one is different. The only way that I have found so far is

echo ./autofs/da0/Month/Photo/Pictures ./autofs/da1/Month/Photo/Pictures ./autofs/ada1s1/Month/Photo/Pictures | xargs -n 1 cp  /usr/home/groot/Documents/Pictures/*

That doesn’t work to delete the files, but at least I have a way to copy them to multiple drives now.


#6

Couldn’t you do something like

Blockquote rm ./autofs/da0/Month/Photo/Pictures/*

for each before you run the code you just posted.


#7

I could, actually that is what I do is but that seems like a lot of work. I’m looking for an easier way.


#8
rm -rf ./autofs/da0/Month/Photo/Pictures
mkdir -p ./autofs/da0/Month/Photo/Pictures
cp file1 file2 file3 ./autofs/da0/Month/Photo/Pictures

?


#9

That would work to copy multiple files to the same drive. I’m trying to copy/delete the same files on multiple drives.


#10
# copy_my_files.sh
rm -rf ./autofs/$1/Month/Photo/Pictures
mkdir -p ./autofs/$1/Month/Photo/Pictures
cp file1 file2 file3 ./autofs/$1/Month/Photo/Pictures

and run it four times

copy_my_files.sh da0
copy_my_files.sh da1
copy_my_files.sh da2
copy_my_files.sh da3

I probably can write a single shell expression with a loop. Would you like?


#11

Yes! I would very much like that.


#12

That’s for bash:
for d in "da0" "da1" "da2" "da3"; do rm -rf ./autofs/$d/Month/Photo/Pictures; mkdir -p ./autofs/$d/Month/Photo/Pictures; cp file1 file2 file3 ./autofs/$d/Month/Photo/Pictures; done

or

#!/usr/local/bin/bash
# copy_my_files.sh
for d in "da0" "da1" "da2" "da3"; do
   rm -rf ./autofs/$d/Month/Photo/Pictures
   mkdir -p ./autofs/$d/Month/Photo/Pictures
  cp file1 file2 file3 ./autofs/$d/Month/Photo/Pictures
done

Sorry, didn’t test it. Pls backup your files etc.

Edit:
If you’re after csh/tcsh, it probably won’t be a one-liner but rather a script. How badly do you want it to be a one-liner?