Copy data from many CDs using ruby

B

Bobby Sutter

Hi,

I am a beginner with very basic knowledge of ruby, but I would like to
create a script that would do the following:

1) Prompt to input disc
2) Create a new sequential folder within a specified directory
3) Copy all files from disc into said folder
4) Eject disc
5) Prompt to input another disc

Essentially, I must copy the data off of ~1000 CDs and put the data into
a separate folder for each disc. I would be doing this in a linux
environment (ubuntu or debian).

Does anyone have any tips on where to start? Can this even be done with
ruby? Thanks!
 
R

Reid Thompson

Hi,

I am a beginner with very basic knowledge of ruby, but I would like to
create a script that would do the following:

1) Prompt to input disc
2) Create a new sequential folder within a specified directory
3) Copy all files from disc into said folder
4) Eject disc
5) Prompt to input another disc

Essentially, I must copy the data off of ~1000 CDs and put the data into
a separate folder for each disc. I would be doing this in a linux
environment (ubuntu or debian).

Does anyone have any tips on where to start? Can this even be done with
ruby? Thanks!

google
most likely yes, it can be done
You might want to just write a bash script for it though
 
T

Tom Cloyd

Bobby said:
Hi,

I am a beginner with very basic knowledge of ruby, but I would like to
create a script that would do the following:

1) Prompt to input disc
2) Create a new sequential folder within a specified directory
3) Copy all files from disc into said folder
4) Eject disc
5) Prompt to input another disc

Essentially, I must copy the data off of ~1000 CDs and put the data into
a separate folder for each disc. I would be doing this in a linux
environment (ubuntu or debian).

Does anyone have any tips on where to start? Can this even be done with
ruby? Thanks!
Beginner? Me too, but I may know a bit more than you at this point. I
know that the first time I tried to do something like this I ran into a
few surprises. So...I'll do for you what others here have done for me -
an act of generosity that is rather often characteristic of this list -
throw some code at you.

While the following code is rudimentary, it does meet your
specifications - at least on my Kubuntu Linux OS. You may have to look
up some things to make complete sense of it - or ask more questions.
Hope this is useful.

# cds_copy.rb

def main
cd_source = "/media/cdrom" # CDs read from here
dirbase = "/home/tomc/Ruby-work/a-test" # new dirs created here
dirstart = 0 # dir counter (for name creation)
while true # loop forever until told to stop
# Prompt to input disc
puts "Load CD. Press enter when loaded. Enter 'x' to exit."
gets # input defaults to '$_'
exit if /^x/ =~ $_
system( "mount '" + cd_source + "'" )
# Create a new sequential folder within a specified directory
foldernew = ( 'CD' + (dirstart.to_i + 1).to_s )
dirstart += 1
# Copy all files from disc into new folder
FileUtils.cp_r(cd_source, foldernew) # recursive copy
# Eject disc
system( "eject '" + cd_source + "'" )
end
end

require "fileutils"

main

# end file

Tom C.

--

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tom Cloyd, MS MA, LMHC - Private practice Psychotherapist
Bellingham, Washington, U.S.A: (360) 920-1226
<< (e-mail address removed) >> (email)
<< TomCloyd.com >> (website)
<< sleightmind.wordpress.com >> (mental health weblog)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
M

Mk 27

Tom said:
system( "mount '" + cd_source + "'" )

There is a problem here in that most contemporary linux users use
distros with auto-mounting. So either change the prompt to "Insert disk
and hit enter AFTER cd is mounted" or use a sleep() of some appropriate
duration.
 
T

Tom Cloyd

Mk said:
Tom Cloyd wrote:



There is a problem here in that most contemporary linux users use
distros with auto-mounting. So either change the prompt to "Insert disk
and hit enter AFTER cd is mounted" or use a sleep() of some appropriate
duration.
Erp. Well....

You are entirely correct. In my transition from Windows to Linux about a
year ago, I found this whole CD mounting business a bit confusing. Then
I figured out how to get it work and either learned an old-fashioned
way, or the the OS moved to auto-mounting and I just didn't notice (the
latter, I think).

The code runs on my OS as written, but it also runs if one comments out
this line

system( "mount '" + cd_source + "'" )

and manually closes the CD and waits for the light to out.

Cool...My system (the one I run in my head) just got updated today.

You see how helpful this list is? Thanks MK.

t.

--

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tom Cloyd, MS MA, LMHC - Private practice Psychotherapist
Bellingham, Washington, U.S.A: (360) 920-1226
<< (e-mail address removed) >> (email)
<< TomCloyd.com >> (website)
<< sleightmind.wordpress.com >> (mental health weblog)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
M

Mk 27

Tom said:
You see how helpful this list is? Thanks MK.

No problem. This one came up about a week ago and I thought it was
funny because the first "learning" project I did (like, just) in ruby
was to create a database of my DVD backups. Evidently newbie minds
think alike, to some frightening degree.

I actually don't use automounting, 'cause I find it irritating.
 
T

Tom Cloyd

Mk said:
Tom Cloyd wrote:



No problem. This one came up about a week ago and I thought it was
funny because the first "learning" project I did (like, just) in ruby
was to create a database of my DVD backups. Evidently newbie minds
think alike, to some frightening degree.

I actually don't use automounting, 'cause I find it irritating.
That's interesting. I do as well. Had it turned off on my WinX OS, and
then just sorta forgot about it. For me it (obviously) ceased to exist.

t.

--

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tom Cloyd, MS MA, LMHC - Private practice Psychotherapist
Bellingham, Washington, U.S.A: (360) 920-1226
<< (e-mail address removed) >> (email)
<< TomCloyd.com >> (website)
<< sleightmind.wordpress.com >> (mental health weblog)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,596
Members
45,129
Latest member
FastBurnketo
Top