Thursday, June 16, 2011

Robocopy error log

C:\>type robocopy.log | find "(0x" > robocopyerrors.log

If you've used robocopy to back up files and log the process, you probably have a massive, unwieldy robocopy log which lists every single file that was copied. That's all fine, but what if it tells you there were 100 files that failed to copy? How do you know which ones?

Now, I'll admit, if you only have a small handful of failed files, it's probably easier to open the log in notepad and find them with CTRL-F. You can search for "error," but that may not be ideal if you have a lot of files with "error" in the path. A better search term is "(0x", which is the beginning of the error code number.

Once the number of errors hits double-digits, it's probably better to be able to see the errors by themselves without dealing with having to click Find Next. The above command will list the entire file, find only the lines containing error codes, and save the results as robocopyerrors.log. The only real downside is that you don't get the human-readable error, just the code. The error message is saved one line below the error code, so retrieving it would involve some complex command line jujitsu. I may tackle that some other day.

Wednesday, June 8, 2011

Robocopy backups

C:\>robocopy c:\users\joe\documents e:\backup /copyall /mir /r:0 /w:0 /log:c:\users\joe\desktop\robocopy.log

I wasn't sure about including robocopy here, because it's not built in to XP, but it comes with Windows 7 (and I think Vista too). You can download it for XP from the Windows Server 2003 Resource kit here. This particular command will back up Joe's documents folder to a folder called "backup" on the E: drive, presumably a USB drive.

It will (/copyall) copy all NTFS rights (irrelevant on a FAT32-formatted flash drive), it will (/mir) mirror content, meaning it will only back up changed files or files with newer time stamps, but it will also delete* any files not existing on the source. It will not (/r:0 /w:0) retry failures, and it will create a log of everything on the desktop.

*Be VERY careful with the /mir switch. The FIRST thing it does is delete folders that don't exist on the source. So if you accidentally point it at the root of your external drive instead of the backup folder, it will wipe it out before you have a chance to stop it.

Thursday, June 2, 2011

Take admin ownership

C:\>takeown /f . /a /r

This will assign ownership of the current directory, and all files and folders below it, to the local admins group (BUILTIN\Administrators). Ten minutes ago, I didn't know the takeown command existed! (It's new to Vista/Server 2008)

The /f switch specifies which file(s) (single dot means current dir), the /a assigns ownership to the admins group instead of specifying a specific user, and the /r recurses through all files/folders.

Wednesday, June 1, 2011

Domain admins full access

C:\>icacls * /grant "Domain Admins":(OI)(CI)F /c /t

I don't know if it's just me, but my NTFS rights tend to get screwed up a lot. Sometimes the Domain Admins group loses rights to files, among other issues. Previously, I would use:

C:\>cacls * /e /g "Domain Admins":F /c /t

to accomplish this, but I started running into problems with the 255-character limit on path names. (Why people think they have to nest their folders so deep is beyond me.)