![]() ![]() Its usefulness is immediate and a tool all professionals working with files would benefit from every day. The best cheap, commercial comparison tool out there is Beyond Compare from - it is hands down a brilliant tool. I might be able to find it, but not right now. For my life I can't recall what the name of that tool was at this point. I made a custom batch driven backup system once that had a third party tool copying new and changed files to a backup drive nightly. Simply add /ts: C:\>robocopy.exe source target /l /e /zb /xx /xl /fp /ns /nc /ndl /np /njh /njs /ts Third, I wanted to remove as much logging fluff as possible, and I was pleasantly surprised to find that all of it was removable:įor my purposes (creating versioned backups of changed files), I realized I'd actually like to have the timestamp of each modified file, too. /fp enables full paths (unsurprisingly, there was no option for relative paths).Second, I desired relative paths (or at least full paths, not just names): /xl excludes "lonely" files and directories-those which exist only in the source./xx excludes "extra" files and directories-those which exist only in the target.I didn't need any of the copy-related options since I'm not actually performing any actions.Īnyway, next, it was only a matter of adding more switches to get the output I desired: C:\>robocopy.exe source target /l /e /zb /xx /xl /fp /ns /nc /ndl /np /njh /njsįirst, I only cared about modified files and folders, so: /zb copies in "restart" mode, and on access denied, "backup" mode it seems like the safest approach read more here./e includes subdirectories, but unlike /s, includes empty directories too./l lists actions without actually carrying them out.Total Copied Skipped Mismatch FAILED Extras After downloading and installing, I recreated the scenario in my question and gave it a go: C:\>robocopy.exe source target /l /e /zb Robocopy comes as part of a set of tools currently known as Windows Server 2003 Resource Kit Tools. For me, all these factors contribute to "transparency," despite it being closed-source, and set my mind at ease. Robocopy (Wikipedia) seems widely adopted for Windows system administration is well-documented (TechNet) is discussed as more than an obscurity on Stack Overflow, Server Fault, and of course, here at Super User provides for a specific function rather than trying to be a multi-purpose tool (which tend toward bloat and bugs) and furthermore has been providing this specific function since 1997. tl dr C:\>robocopy.exe source target /l /e /zb /xx /xl /fp /ns /nc /ndl /np /njh /njs But what would you do, given this task?-Is there some obvious route that I'm recommended Robocopy in his answer, and it suited my needs perfectly. I can't wrap my head around batch scripting syntax. For something as important as backing up files, relying on software or code I can't see or understand is scary! Recap Also, I'm not looking for software in general unless it's a simple and compact tool for specifically this purpose- I prefer a transparent, programmatic solution. I haven't found any "canonical" tool like rsync in Windows, at least not any that support options like the above. That kind of opposes the "reliable" part of a nightly backup. However, I'd hate to rely on Cygwin (cwRsync) to use rsync, as I'm already prone to running quick-and-dirty experiments on my Cygwin installation, often breaking the environment and needing to reinstall Cygwin every few weeks. out-format="%i|%n|" # define an output format for the list of changes ![]() itemize-changes # list changes rsync _would_ have made Reading, I learned that rsync can do something like what I'm after, using options like -dry-run # don't actually rsync (touch) any files Also, this is for a custom nightly backup solution, where reliability and data integrity is a priority, so given that a few weeks ago I couldn't even figure out a for-loop in a batch script, I'm pretty sure I lack the experience to do this right, or even determine the best way to do this. ![]() I'm a UNIX dev myself, and wouldn't be asking if this were a UNIX system we're dealing with, but alas. Or, a full path on either the source or the target folder would be acceptable too: C:\source\foo\bar\b.txtĪs the example shows, I don't care about files and folders that have been deleted or created! Which should make this task much simpler than otherwise. ![]() Then given a magical script or command, say, magic C:\source C:\target, I'd like the output to be foo\bar\b.txt I'm looking for a way to compare two folders recursively and output the relative paths all files (and folders) that are different (by size or by timestamp, à la rsync).įor example, say I have C:\source\foo\a.txtĪnd suppose b.txt has been changed under C:\source, and is thus newer. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |