Solved

deleting files with bad characters from mounted Windows drives

Posted on 2004-04-15
7
952 Views
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:

#!/bin/sh

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 //ausnt-018.ad.cirrus.com/tcm /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!
0
Comment
Question by:texasreddog
7 Comments
 
LVL 9

Expert Comment

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

Author Comment

by:texasreddog
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/"
0
 
LVL 22

Expert Comment

by:NovaDenizen
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.
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

Author Comment

by:texasreddog
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:

http://www.redhat.com/archives/fedora-list/2004-January/msg00973.html

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

Assisted Solution

by:NovaDenizen
NovaDenizen earned 50 total points
ID: 10836360
Read this comment from that thread:
http://www.redhat.com/archives/fedora-list/2004-January/msg00915.html

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.

0
 
LVL 12

Accepted Solution

by:
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.

Cheers,
Stefan
0
 

Author Comment

by:texasreddog
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.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Introduction: Load and Save to file, Document-View interaction inside the SDI. Continuing from the second article about sudoku.   Open the project in visual studio. From the class view select CSudokuDoc and double click to open the header …
Introduction: Finishing the grid – keyboard support for arrow keys to manoeuvre, entering the numbers.  The PreTranslateMessage function is to be used to intercept and respond to keyboard events. Continuing from the fourth article about sudoku. …
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.
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…

867 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

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now