deleting files with bad characters from mounted Windows drives

Posted on 2004-04-15
Last Modified: 2013-12-26
I have a script that mounts to a Windows drive, and is supposed to delete an entire subdirectory from the Windows drive.  I have rights to the files on the drive.  Here is my script:


cd /root/tcm
rm -f beijingtcm.tar.gz
rm -rf BeijingTCM
mkdir BeijingTCM

# Unmount and remove remote directories
cd /
umount mnt/beijingtcm
cd /root
rm -rf /mnt/beijingtcm

# Make remote directory
mkdir /mnt/beijingtcm

# Mount to Windows shared drive
mount -t smbfs -o username=xxxxxxx,password=xxxxxxx,workgroup=AD // /mnt/beijingtcm

#rm -rf /mnt/beijingtcm/BeijingTCM/
mv /mnt/beijingtcm/BeijingTCM/* /root/tcm/BeijingTCM/
rm -rf /mnt/beijingtcm/BeijingTCM/
mkdir /mnt/beijingtcm/BeijingTCM/

cd /root/tcm
sh ./getfile

cd /mnt/beijingtcm/BeijingTCM/
tar -xvzf BeijingTCM.tar.gz
rm -f BeijingTCM.tar.gz

cd /root/tcm
rm -rf BeijingTCM

The problem I'm having is when it gets to the mv /mnt/beijingtcm/BeijingTCM/* statement.  It tries to move the subdirectories and their files to a temporary directory on my Linux server for deletion later, but it has trouble trying to move or delete some of the files, because they have weird characters in the filename.  Some of the errors include the following:

mv: reading `/mnt/beijingtcm/BeijingTCM/Orion/\250\215\253Y\372\253E\253 \346\253 Orion.lnk': Invalid or incomplete multibyte or wide character

mv: reading `/mnt/beijingtcm/BeijingTCM/Sonata1_Playability/Resources/058 CDDA-DTS Retailed A\217\346A\024\226E\220.lck': Invalid or incomplete multibyte or wide character

Is there a way to force the script to either move or delete these kinds of files without giving this error?  If I can't move or delete them, I can't create the new directory for the incoming archive.  Thanks!
Question by:texasreddog

Expert Comment

ID: 10834885
Try to loop on list of files, and for each one put " " around the filename

Author Comment

ID: 10835048
so will something like this work?

mv "/mnt/beijingtcm/BeijingTCM/*" /root/tcm/BeijingTCM/

or if I just want to delete without moving, can I do this?

rm -rf "/mnt/beijingtcm/BeijingTCM/"
LVL 22

Expert Comment

ID: 10835459
I don't think the GNU mv command cares much about multibyte character filenames.  I ran strings on my /bin/mv, and I couldn't find the error message mv is reporting.  That leads me to think the error message is coming from the kernel, or a kernel filesystem driver.  It could be that your destination filesystem is picky about disallowing filenames that don't meet its expectations for multibyte characters.

Also, the mv command is fast when moving files round inside a mount, but not very useful for moving files from one mount to another.  In the cross-mount case, "mv /device1/a /device2/b" is basically equivalent to running the two commands "cp /device1/a /device2/b ; rm /device1/a ".  Since you're running a rm -rf on the directory anyway, you could just use a cp command.  Using a cp -R will let you avoid the wildcard expansion too in case your shell is somehow creating the problem.

"cp -R /mnt/beijingtcm/BeijingTCM/ /root/tcm/BeijingTCM"
 can replace
"mv /mnt/beijingtcm/BeijingTCM/* /root/tcm/BeijingTCM/"

I haven't run this, so you might have a BeijingTCM/BeijingTCM directory in there.
Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.


Author Comment

ID: 10836029
I tried the cp -R command, and it copies the files, but it still won't let me delete the directory, which is what I really need to do.  This error in my first post appears to be a headache for other Linux users:

If anyone can find a good solution to this, please let me know.
LVL 22

Assisted Solution

NovaDenizen earned 50 total points
ID: 10836360
Read this comment from that thread:

He fsck'ed the filesystem, and it turned out to have errors.  After fsck fixed them, the problems went away.

Since you're remote-mounting via samba, you might try running "chkdsk" on the windows machine in question.

LVL 12

Accepted Solution

stefan73 earned 50 total points
ID: 10840388
Hi texasreddog,
It looks like Linux has problems handling "truncated" (real or imagined) multi-byte file (Unicode) names on your Windows drive. Check your Samba documentation on how to disable character translation.

In worst case, you need to correct those file names on the Windows side.


Author Comment

ID: 10843172
I agree.  That's the conclusion I came up with.  The files on the Windows side should be renamed to handle better in Linux.  And a chkdsk wouldn't hurt, either.  I'm going to split the points and close the question.

Featured Post

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction: Dialogs (1) modal - maintaining the database. Continuing from the ninth article about sudoku.   You might have heard of modal and modeless dialogs.  Here with this Sudoku application will we use one of each type: a modal dialog …
Introduction: Dialogs (2) modeless dialog and a worker thread.  Handling data shared between threads.  Recursive functions. Continuing from the tenth article about sudoku.   Last article we worked with a modal dialog to help maintain informat…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question