Question about using Linux

I have two hard drives physically installed in my PC, and a third one used for storage which is attached externally through USB.

Recently, windows 7 (my system OS) began refusing to open this third drive. When I plug it in, it says that I need to format it before I can use it; or else if I try to access the drive through explorer, it tells me “access denied.”

So, I have a disk of Puppy Linux, and just as I thought, when I boot into Linux, it sees and opens the drive just fine.

I would like to copy the contents of the external drive onto the second hard drive, which is internal and has lots of room. However, I can’t figure out how to do this in Linux. When I double-click on the external drive and open it, I can then use a right-click to highlight the contents, but the “copy” command is greyed out.

Help?

Have you tried dragging the files from one drive to the other?

Yes. Didn’t work. :frowning:

It may have something to do with the fact that the installation wants to “mount” each drive separately to access it --?

If you can see your files, the drive is already mounted.

When you boot into Puppy, you should see your drives on the desktop as “sda1”, “sdb1”, or similar, correct? When you open one in the file browser, you’ll see the path to the mount point in the title bar. It should say “/mnt/sda1” or similar.

Use the file browser to identify the mount point paths for your old drive and the drive you want to copy your files to. Double click the “console” icon to open a command prompt.

For the sake of example, I’ll call the source disk /mnt/sda1 and the target /mnt/sdb1. Enter the following command in the console window (urxvt) to copy from /mnt/sda1 to /mnt/sdb1:

cp -rpv /mnt/sda1/ /mnt/sdb1*

Replace those with the correct paths and you should be good to go.

ETA: “cp” is the copy command. The -r flag tells it to copy recursive, that is, to traverse the whole folder and all child folders and copy everything. The “-p” flag preserves file permissions and modification times on your files, and the “-v” flag stands for “verbose”, so it’ll show you what it’s copying.

ETAA: Make sure to do a proper shutdown of Puppy when it’s done!

Also, if you want to copy the data into a specific folder on the target drive, navigate to that path in the file explorer, and use the path displayed in the title bar in place of /mnt/sdb1 in the above command.

One thing that may be a factor is if the drive you’re trying to copy to is formatted as NTFS. The Linux kernel can read those drives but you need an extra driver to write to them. The PuppyLinux page recommends updating this driver if you have problems with an NTFS partition.

Puppy uses the NTFS-3G FUSE implementation by default nowadays, so the OP should be good there.

Yeah but checking that the driver is up to date is still a good idea.

However, if Windows can’t access the source drive and “copy” is greyed out in Linux that probably points to issues on that side rather than the destination. It might be corrupted, or the file permissions might be broken. You should try running a disk diagnostic tool on your drives to see if you spot any problems. I don’t know about PuppyLinux but Ubuntu has a good DiskUtility, which is easy to use, in its Administrator menu.

Hey, it worked!! Thank you, goldmund and jovan!!

Glad to hear it!