Showing posts with label GoodSync. Show all posts
Showing posts with label GoodSync. Show all posts

Friday, March 23, 2012

Synchronizing Two Computers: GoodSync and Alternatives

I had a home network with two computers, consistent with my evolving concept of how many computers a person should have.  (The third was a notebook.  The fourth was now distributed, in pieces, across the universe.)  I found it was convenient to have the second of those two computers take care of backup, construct reliable file indexes for searching, hold certain programs open, run certain batch files at regular intervals, and remain available for moments when the primary computer was doing maintenance or for some other reason was unavailable.

I was writing these words at one such moment.  The primary computer had just become dysfunctional.  And this was OK.  I was able to turn to the secondary computer and keep on working, pretty much where I had left off, because I was using a synchronization program that kept the two computers in sync via ethernet cable.

Critique of GoodSync

Except that, unfortunately, now was the moment when my synchronization program became flaky.  That program was GoodSync.  More than a year earlier, I had examined reviews of synchronization programs and had chosen GoodSync over the others.  I had purchased the pro version and worked through the details of setting it up.

During this year, I had found GoodSync largely suited to the task.  There were two principal problems, one of which prompted my search for a replacement.  That was the problem of licensing.  GoodSync's representative told me that the license allowed me only two installations per year.  The problem was that GoodSync could not be deactivated.  So, in my setup, I installed it on the secondary computer, and used it to synchronize my laptop and my primary computer with the secondary computer.  But if Windows became dysfunctional, or if my hard drive crashed, or for any other reason I had to reinstall GoodSync, that would count as one of my two permitted installations.

So I had already had one go-round with the GoodSync people about that.  Now there was another licensing issue.  They promised me that, since I had bought my copy within a certain timeframe, I would qualify for a free upgrade from version 8 to version 9.  But when the time came, the licensing did not work.  So at the moment when I was writing these words, I was looking at a notice that said this:

You have exceeded the Free version lmitations.  To continue using GoodSync you should upgrade to GoodSync Pro version or reduce your jobs to 3 or files in a job to 100.
But when I tried to activate, I got this:
FAILED:  Our records indicate that you have only GoodSync 8 licenses in the order you specified, but you are trying to activate GoodSync 9, which requires a separate license.
My options in this regard were to get on the phone and complain about the broken promise, go through the steps to uninstall version 9 and reinstall version 8, or buy an upgrade to version 9.  I did contact them and get it sorted out.  Possibly it was even my mistake in the first place.  I was not fresh on the details when writing these notes.  Point is, the matter might have been settled there, if it hadn't been for the second problem.

The second problem, which had been more persistently troublesome, was that GoodSync was a tremendous resource hog.  It would interrupt or slow down my work very noticeably, to the point that the computer would become unusable and even unresponsive.  I emailed them about this too.  Their reply was that I should upgrade to version 9.  I did that.  But that didn't fix the problem.  Version 9 did have an option, which may or may not have been present in version 8, to impose a "speed limit" on file copying.  This was obviously not an ideal solution:  it would slow things down when the computer was free, and it might not slow things down enough when the computer was busy.  This would be one more thing I would have to tinker with, in hopes of finding the right value.  Why not just have the kind of "smart" arrangement found in other programs, where it drops back to a slow jog or a standstill, depending on computer resource usage?

The slowdown problem was exacerbated by uncertainty as to how to get the damned thing to just stop when I was finally tired of waiting on it.  Right-clicking the system tray icon would give me options to Stop All or Disable Auto Run.  Disable Auto Run seemed to be only temporary.  A while later, I would be sitting at the computer in a stupor, waiting for it to do something, and would then find that it had sneakily started doing auto synchronizations again.  On the other hand, if I clicked Stop All, a long time could go by before I would think to check up on my supposedly automatic software.  And Stop All did not work reliably anyway.  More than once, I had to go into Task Manager (Ctrl-Alt-Del) and just kill GoodSync immediately.

Those were the big issues.  There were some others.  I didn't like that I couldn't get a clear indication of how long a job would be running.  When a program does the same thing 20 times a day, eventually it would seemingly be able to give a pretty good estimate of how long it would take to complete a synchronization.  I didn't like that GoodSync needed to distribute _gsdata_ folders all over my computer.  I had looked on that as the price of progress, but for some reason those folders sometimes contained copies of files, which could lead to confusing and potentially disastrous results when doing a sweep for unnecessary duplicates or searching for the latest copy of a file.  I didn't like that GoodSync was not able to keep computers synced on an up-to-the-moment basis.  I would have thought that, with the aid of those _gsdata_ folders, the program would have been able to know, pretty quickly, when a file had been changed, and it would ordinarily seem pretty straightforward to get a copy of that file to the other machine.  What I actually got, unfortunately, was a nearly constant hard drive workout on the secondary machine.

A Search for Alternatives

Since I was at this point of having to deal with license issues again, for the third or fourth time in the past 12 months, it occurred to me that it might make sense to see if I could find a better alternative.  I had pretty good impressions of recommendations from Gizmo's Freeware, so I started with their list of Best PC Freeware.  Their choice for best folder synchronization utility was PureSync.  Oddly, Gizmo's link to a review of PureSync actually led to a November 2011 Gizmo article that named a different program, FreeFileSync, as the best free synchronizer.  FreeFileSync didn't sound too good -- no autosync, among other things -- but the article did mention Allway Sync as a commercial alternative. 

A search for these three (i.e., GoodSync, PureSync, and Allway Sync) led to an alternativeTo webpage listing a number of possibilities.  Among those possibilities, I decided that a programmatic solution like rsync would not work for me, partly because I had not tended to devote the time needed to maintain command-line file management solutions, and partly because I wanted to be able to see what was being overwritten.  I decided against using Beyond Compare, which I used and liked for backup verification purposes, because it did not seem to provide a suitably automated solution.  The only other item that stood out, for me, among the alternativeTo entries was Microsoft SyncToy.  I decided to reserve judgment on it for now.  (For reasons of speed and reliability, I was looking solely at ethernet-capable tools.)

Seeking guidance, I looked back at the previous year's post, to see what comparison sources I had consulted then.  This led to the "sync software" category at TopTenReviews and the "data transfer & sync software" category at CNET.  MajorGeeks didn't have a sync category, and at Softpedia and elsewhere, sync software was mixed into a general category.  The top six at TopTenReviews were Syncables 360, GoodSync, SugarSync, Laplink PCsync, ViceVersa, and Allway Sync.  At CNET, filtering for Windows 7 programs, there were essentially two lists.  First were the "sponsored" (i.e., bought) reviews.  These were iffy:  ViceVersa Pro got four stars from editors and users alike, but the sponsored BeyondSync got five stars from editors but only three stars from users.  Otherwise, among programs most downloaded during the preceding week (so as to avoid some that may have been popular in the olden tymes), the only one of note seemed to be Allway Sync.

From those sources and from general browsing, certain names appeared to be emerging, including GoodSync, Allway, and ViceVersa.  A search for comparisons of those three didn't yield obvious recent sources of insight.  (Later, I would find a Wikipedia page that compared many programs on a number of features.  It seemed to indicate that GoodSync was one of the most capable programs.  I wasn't sure, at that point, whether a closer look at the other programs reviewed there would have yielded a different outcome for my purposes.  My tentative conclusion from that webpage was that, along with the programs reviewed below, I probably would have looked at FreeFileSync.)  The TopTenReviews comparison suggested that, in terms of features, the top six just listed were mostly competitive for my purposes, except for SugarSync.  According to TopTenReviews, the top three (Syncables 360, GoodSync, and Laplink) pulled away from ViceVersa and Allway Sync in terms of ease of use, support, and documentation.

I looked at individual product reviews at Softpedia.  There were some contrasts.  GoodSync got 2.9 stars from 118 users.  ViceVersa Free got 2.5 stars from 23 users.  ViceVersa Plus got 3.0 stars from 25 users.  ViceVersa Pro got 3.6 stars from 28 users.  SugarSync got 3.1 stars from 25 users.  Syncables Desktop got 1.6 stars from 3 users.  Allway Sync got 3.3 stars from 112 users.  BeyondSync got 3.2 stars from 11 users.  There was no Softpedia entry for Laplink.  In short, according to voters at Softpedia, the two leading programs were ViceVersa Pro and Allway Sync.  The lackluster score given to GoodSync seemed to be relatively well based.  That is, there seemed to be a fair number of confirming votes.  I should mention that, in a presumably different class, Microsoft SyncToy averaged 3.9 stars from 54 voters.  Of these programs, it appeared that Softpedia's editors rated only SyncToy.  They gave it four stars.

I also checked program reviews at CNET.  GoodSync got four stars from 654 user reviews, and four stars from editors.  ViceVersa Plus got no votes; ViceVersa Free got 3.5 stars from 20 users; ViceVersa Pro got four stars from 30 users, and four stars from editors.  SugarSync got five stars from editors, and 2.5 stars from 82 users.  Syncables 360 got two stars from four users.  Allway Sync got 3.5 stars from 53 users, and 4.5 stars from editors.  BeyondSync got three stars from 14 users, and five stars from editors.  Laplink had one star from one user.  SyncToy got four stars from editors and 3.5 stars from 61 users.  These results suggested that, for CNET users, the worst programs were Laplink, Syncables, and SugarSync, and the best programs were GoodSync and ViceVersa Pro, followed by ViceVersa Free, Allway Sync, and SyncToy.  There was something odd about the fact that GoodSync got at least eight to ten times as many votes as the others.  Again, there were suspicious discrepancies between the votes of editors and of users.

Overall, the reviews provided by these three sources -- TopTenReviews, Softpedia, and CNET -- were only somewhat consistent.  Their sometime inconsistency may have been at least partly due to somewhat different target markets.  At TopTenReviews, the good score for GoodSync was fairly compatible with the results at the other two sources, though the mediocre score at Softpedia was interesting.  TopTenReviews' high ratings for Syncables and Laplink seemed incongruous.  ViceVersa Pro and Allway Sync were in the top or second tier at all three sources.  SyncToy was fairly highly rated by the two sites that reviewed it.  Among the others, ViceVersa Free also seemed to be potentially worth a look.

Although Allway Sync had a free version, its license page indicated that that version had a limit of 40,000 files per month.  Although I was not sure how that would be counted, it seemed likely that a couple of full backups per month would exceed that limit for many people.  The pro version was available for $20, in comparison with $30 for GoodSync and $60 for ViceVersa Pro.  I noticed that the CNET editors described Allway Sync as "one of the best tools we've tried."  I decided to try it myself.  Also, while I now saw that SyncToy had no scheduler, it appeared likely to be useful for some purposes, so I downloaded it too.

Microsoft SyncToy 2.1

I decided to start with SyncToy for two reasons:  I believed it would be simple to install and run, and I figured it would probably be pretty severely limited, and could therefore be disposed of quickly.  In other words, it seemed likely to be a handy tool to know about, for some purposes, but not my primary machine for keeping computers reliably synchronized.

The program's interface seemed pretty straightforward.  Nonetheless, I ran a search for sources of guidance and insight.  A How-to-Geek webpage said SyncToy would require me to set up a pair of folders that I wanted to synchronize, and would then ask me which kind of synchronization I desired.  There were three options:  Synchronize (copy and delete in both directions, between the two folders, so that the latest additions, changes, and deletions appeared on both), Echo (update the right folder so it matched the left), or Contribute (add to the right so that it contained everything on the left, but don't delete anything from the right).  The How-to-Geek webpage went on to explain how SyncToy tasks could be automated through Windows Task Scheduler.

A discussion thread pointed out some limitations with SyncToy:  no volume shadow copy, so locked files would not be copied (which also seemed to be the case with GoodSync); no way to back up your folder pairs, for reinstallation or for use on another computer, so they would all have to be recreated by hand; a nasty bug regarding timestamps when synchronizing NTFS to FAT drives.  Hints to a potential solution for the folder pair backup issue appeared in another thread, discussing the possibility of creating folder pairs via command line.

The "What's New" section in SyncToy's internal help file suggested that SyncToy 2.1 might have resolved some or all of these issues.  I ran another search and saw references to memory leaks and other bugs.  A discussion thread contained indications of some dissatisfaction.  I decided SyncToy was probably pretty good, but it was not the sort of limited but airtight and portable tool I had imagined.  It was more like a contender for the role of primary synchronization tool.  For that purpose, I had a sense that I would like Allway Sync more, so I turned in that direction.

Allway Sync

For some reason, after that brief look at SyncToy, I started getting cold feet.  A couple of days had passed since I had started the thread, and now, as I looked at alternatives to GoodSync, it seemed like I was getting myself into a lot of unnecessary hassle.  This was probably due to two things.  First, I was busy with other stuff and didn't want to deal with this at the time; and second, I was having an unrelated system issue that kept the secondary/server computer from seeing the primary/workstation computer.

I rebooted as an expression of my faith that this would make it all better.  It didn't.  I gave it a couple of hours and the let spiritual power of saying "to hell with it" do its magic.  When I came back to my existential mess, computer B was seeing computer A.  All was well with the world.

So I installed and ran Allway Sync -- an awkward name, by the way, referred to hereinafter as AS.  AS had distinct Analyze and Synchronize passes, like GoodSync.  I set it up to compare a folder on each machine.  The interface was OK.  I didn't like the huge chunk of real estate, at the top of the screen, devoted to nothing in particular, but found I could get rid of that with View > deselect Show Logo.  As it was running its analyze pass, it suddenly gave me this:
script error, Unspecified error., URL:
file:///C:/Program%20Files/Allway%20Sync/Skins/default/profileex.js, line: 5138.
It offered to send an error report.  I let it do that.  I wasn't sure what effect the error might have on that comparison across two machines.  There were 89 Important Messages.  The brief messages provided -- "Questionable file (manual review recommended)" -- were not as informative as GoodSync's left/right comparison messages.  I didn't like its interface.  While I was poking around with it, I got another script error.

I wasn't excited about Allway Sync.  Blame it on them, blame it on me, but for whatever reason, I decided to keep looking.

WinMerge

Around this time, I came across the freeware WinMerge program.  I hadn't seen much mention of it in TopTenReviews or other commercial sites.  Wikipedia said the WinMerge project was currently dormant.  The program's homepage indicated that the last stable version (2.12.4) had been released nearly three years earlier, in mid-2009.  But Softpedia contained an "experimental" v. 2.13.20, uploaded in October 2010, rated 4.5 by 139 users, and CNET boasted installed and portable versions of a version 2.12.4 (4.5 stars, 29 votes).

Wikipedia's comparison of file comparison tools listed Beyond Compare but not GoodSync.  I had purchased BC Pro.  It had worked well for backup purposes, where I manually eyeballed what was going on.  I hadn't wanted to use it for automated syncing of computers, which seemed to be a less critical operation in my system.  (If GoodSync had been randomly losing stuff, I would have noticed it when I did my Beyond Compare backups.  In other words, after some early watching and tinkering, I was comfortable with letting GoodSync keep the two computers aligned, taking only an occasional look at what it was doing.)  I might have been more inclined to use Beyond Compare for that purpose if I had learned its scripting language, which might not have been that hard; but I had gotten started with GoodSync through a free trial, and just went ahead with that.

Based on the Wikipedia comparison, it now appeared that what I got for my money, in buying Beyond Compare rather than using the free WinMerge, was the ability to do three-way comparisons (which I never did) and possibly the ability to do scripting (Wikipedia drew a blank on that).  WinMerge could not do "horizontal" something (that was all Wikipedia said:  horizontal or vertical, and BC could do both).  WinMerge would have given me a "moved lines" capability that Beyond Compare did not have.  WinMerge did not have FTP support.  These things did not seem crucial to me, though further research to verify what they meant would obviously have been advisable.  But there was one real problem:  WinMerge would not do CRC checks.  Granted, I had not actually been doing those checks in GoodSync either.  My reason was that GoodSync was already taking over my secondary computer; I could hardly bear the thought of making it even more demanding.  But I did want that capability.  It had been a while since memory or other system errors had noticeably corrupted numerous files, but I'd had that experience in the past, and preferred to have some warning if, perchance, one computer quietly began to wander off course.

Other programs mentioned above (e.g., Allway, SyncToy, Vice Versa) did not appear on the Wikipedia comparison list.  It seemed I was getting into an application for which a program like Beyond Compare or WinMerge was designed, and at which it might not excel.  For instance, the comparison did not include features, like scheduling and networking, that seemed essential for synchronizing computers. 
Nonetheless, I decided to try the portable version of WinMerge.  It was small, as befit a portable.  I could see right away that we weren't going to be coddling anybody.  Specifically, I couldn't figure out how to use it.  It didn't have Beyond Compare's user-friendly buttons and menus.  There were no tooltips, so I'd have to just learn what the various buttons meant.

There didn't seem to be a way to tell WinMerge to actually do anything.  I went to its online help manual.  The answer I was looking for was to go to File > Open.  This would seem obvious in another kind of program, but here I wasn't looking to do anything with any particular file.  I was looking for a way to compare folders.  But now that I did take that route, I saw a dialog allowing me to compare folders.  It was able to navigate to the other networked computer, so I compared the D:\Workspace folder on two different computers.  WinMerge seemed to be doing this comparison very slowly.  After a while, I saw that it had stalled on comparison of a particular item.  It didn't name the item; it just said it was item no. 7115.  That may have been a bug; when I killed it, I got a display showing 7142 items, which I think was the total number of items it had said it was comparing.

The WinMerge display was informative.  I could set it to show only the items that were different.  It was a plain-text display, without colors or graphics; but because it used the same tight font as Windows Explorer, with more narrowly spaced lines, it provided a lot more information per screenful than GoodSync did.  It had a collapsible tree mode, like GoodSync.  It was willing to generate a patch.  I didn't know what that was, but apparently it meant a code patch.  It seemed to be a way to help programmers offer suggestions that would improve WinMerge.  There weren't any scheduling features, so it appeared that, for my purposes, I'd be learning how to write command-line scripts and running them through Windows Task Scheduler.  But if I was going to do that, I thought it might make more sense to use Robocopy, which was already built into Windows.

Robocopy

In one of those uncanny cyclical events, exactly a year had passed since I had last worked with Robocopy.  Robocopy was a command-line tool in Vista and Windows 7 (and possibly elsewhere).

Back then, I had set up batch files to run relatively simple Robocopy commands to make backups.  A month later, I had tried to use Backup Maker instead, but that hadn't lasted long.  By this point, both of these tools had fallen into disuse, because I didn't like the backup configuration they were giving me, and I was too busy with other stuff to revisit the question.  I decided to revisit it now.

One thing I hadn't liked about Robocopy was that, every hour (or whenever), Windows Task Scheduler would pop up one of my old-style batch files to run my Robocopy script.  It was inelegant; it was distracting.  So I was interested in Robocopy front ends that might conceal the script execution.  There seemed to be several such front ends:  WinRoboCopy and Easy RoboCopy and Robocopy GUI and SH-Soft RoboCopy GUI and RichCopy, apparently a hybrid using some Robocopy and some other tools.  RichCopy offered ways of fine-tuning a copying process, but they didn't seem relevant to me.  When I ran across a critical report on RichCopy, I decided not to start with it.  Among the others, Robocopy GUI seemed to have the best pedigree, being a Microsoft product like Robocopy.

The link for the Robocopy GUI download was confusingly described as a link to the code for the Technet article discussing it.  I wasn't sure whether it was a link to the code for the article itself or was, rather, a link to the code (or, less nerdily and more accurately, the utility, including its accompaniments, e.g., User's Guide) discussed in the article.  Anyway, somehow I managed to get the utility itself.  I installed and ran the GUI.  It was a concise little thing that you could not possibly use safely without the aid of a Robocopy guide or manual, or a preexisting knowledge of Robocopy.  I say that because, for example, its Copy Options tab (one among seven available) included such options as /E and /ZB.  What did these mean?  The program did not say.  It did have a Help > Robocopy User's Guide menu option that led to a 35-page Word document which I promptely PDFd.  It seemed the principal value of the GUI would be to remind and organize, not really to reduce the need to understand Robocopy's options.

At this point, I started a separate post to discuss Robocopy options in detail.  I also considered using something like Beyond Compare, which would allow checksum comparisons rather than Robocopy's relatively simpleminded and potentially incorrect comparison of dates and times.  As noted in that other post, the main problem I was encountering, with both Robocopy and Beyond Compare (aside from the latter's sometime ability to bog down system processes), was that they weren't true automated synchronization solutions.

What I probably needed, for the checksum issue, was a distinct program that would do continual, low-priority background comparisons between the two computers, so as to distinguish files whose checksum inconsistency was accompanied by a change in file date and time (probably indicating a legitimate update of the file) from those whose checksums differed while timestamps remained the same (suggesting the possibility that one had become corrupt). Having this as a low-priority background function would allow this potentially resource-intensive file comparison function to run when the computer was not busy -- which, itself, would not necessarily be a good trait for a synchronizer. This background checksum comparison wouldn't ordinarily be an urgent function, though it could be an important one. I would be happy with a report, presented to me each morning, as to the results of checks during the last 24 hours, with links that would take me to individual files displaying expected and unexpected checksum inconsistencies. Ideally, such a stealth checker would (also, or perhaps instead) compare checksums against a database, which would be updated upon file creation or acquisition. In other words, as soon as I would PDF a Word document, this background tool would calculate and store that PDF's checksum, so as to facilitate future estimations of what had been happening to it (e.g., it had been subsequently edited in Acrobat, which would tend to indicate manual user verification and therefore an expected change in checksum).

Regarding the bogging-down of system resources, it seemed that, if I did find a way to use something like Robocopy, there was the question of how I could prevent the program from hogging system resources.  There seemed to be two parts to this question: how do I detect that the computer is busy, and how do I slow Robocopy in that case? Or was there maybe one tool that would let me slow down designated processes when computer resource usage reached a certain level? This led to a separate inquiry. At this point, that inquiry had yielded the impressions that something like Process Hacker or Process Explorer might put the brakes on how heavily a program would draw upon system resources during busy times. Those tools hadn't been especially successful against GoodSync, but possibly GoodSync had been programmed to demand priority, in a way that would not be a problem with something like Robocopy.

There was also the question of how I could run a command-line tool like Robocopy unobtrusively.  So far, I had used Robocopy in batch files that would pop up and require a manual click to get them out of the way.  Not a huge problem, but when it occurs multiple times per hour for each of several partitions, it could get to be an irritant.

Conclusion

At this point, I was not finding good alternatives to GoodSync.  The slowness problem seemed to become less pronounced, over the several days during which I was doing these investigations and writing up these notes.  I wasn't sure if that was just because we had not again encountered a heavy load, or if GoodSync 9 had perhaps made a huge improvement over version 8.

My investigation had turned up numerous possible replacements.  Among these, I had identified several programs with potential.  The leading one would be WinMerge; and if that didn't work, I would try Microsoft SyncToy.  I decided to give GoodSync 9 a while longer, to see if it continued to take over the secondary computer.  In that event, I thought I might first make a renewed search for tools that would reliably slow down GoodSync during times when the machine was not idle.

Thursday, March 1, 2012

Windows 7: Assigning Process Priorities to Prevent Slowdowns

I had some programs that slowed down my system to the point that I could barely get any work done.  Examples included Beyond Compare (sometimes) and GoodSync (often).  These programs were not usually urgent; I would have been happy with letting them run at a slower pace, so that I could continue to use the machine in a more or less normal way.  This post describes my search for tools that would give me some control over the demands that those programs would place on my system.

The existing tool for this purpose, Windows Task Manager (available via Ctrl-Alt-Del > Start Task Manager, or via Start > Run > taskmgr.exe), would give me information about various processes.  Many other programs -- including various gadgets and other sorts of monitoring tools -- offered that.  A search led to Process Explorer and System Explorer Portable, which CNET and Softpedia portrayed as popular, highly rated replacements for Task Manager.  For basic system resource information, I was presently using (and liked) Moo0 SystemMonitor, and wasn't too interested in adding more of that right now.

What I was more interested in was actual control of processes.  Evidently it was possible to adjust process priorities manually in Task Manager, and perhaps in Process Explorer and/or System Explorer Portable; but it seemed that this would work only as long as processes were running. In other words, it seemed that the Task Manager manual setting would have to be recreated every time a program was shut down and restarted.

Further investigation led to utilities that would apparently allow me not only to adjust priorities, but to have my adjustments be remembered.  Programs I encountered at this point included Prio, Process Lasso, IO Priority, and Process Hacker. Softpedia searches indicated that Project Lasso was commercial, and had nothing for IO Priority.  I had seen a few very positive comments about Prio, so perhaps it was up and coming; but it was not a major player at either Softpedia or CNET. Those two sources also disagreed as to whether I was getting a free or trial version.  On both CNET and Softpedia, Process Hacker seemed to be the leading tool for process adjustment.

The CNET download gave me both .bin and .exe versions of Process Hacker.  I was more interested in a portable version, so I unzipped the .bin and drilled down to the appropriate .exe and ran that.  It gave me a colorful, hierarchical indication of running processes.

I decided to put it to a test.  I ran GoodSync and did a Ctrl-F in Process Hacker.  That gave me a separate list of files, processes, and threads that apparently involved GoodSync.  But where was GoodSync within the pretty list of colored processes, there in the main Process Hacker window?  I clicked on the Description heading, and that gave me an alphabetical list.  Ah, there it was.  GoodSync was currently using up to 3%, no, 5%, no, make that 10% of CPU resources.  The number kept rising.  In the amount of time it took me to write these words, it was up to 25%.  I had a quad core processor; maybe 25% was going to be the limit.  I clicked to sort on the CPU heading.  At first, GoodSync was solidly in second place as the greatest consumer of CPU resources, behind System Idle Processes.  It seemed that the latter just meant that I had a lot of idle capacity.  That seemed to be the message from Moo0 too:  the CPU was not very busy.

Process Hacker also said that GoodSync was using a steady 468MB in Private Bytes.  A StackOverflow post said that private bytes was "the current size, in bytes, of memory that this process has allocated that cannot be shared with other processes."  Another post in that thread clarified:  this value included pagefile (i.e., virtual) memory.  So it didn't necessarily mean that GoodSync was using almost a half-gig of what the RAM chips in my computer could offer.  The thread seemed to say that the most important value of that number was in whether it was growing, which would indicate a memory leak -- which apparently meant that the program in question kept asking for more and more memory, without reusing or returning what it had already requested and was no longer using.  This didn't seem to be a problem:  the Private Bytes number for GoodSync had not yet risen beyond about 480MB.

I clicked on the I/O Total Rate heading in Process Hacker.  It put GoodSync by far at the top of the list, using 22 mB/s (with variations), when the next most disk-intensive programs were generally asking for less than 20 kB/s.  This concurred with Moo0 -- it was tending to show GoodSync as the chief loader of the hard drive -- but this was giving me much more information about how GoodSync compared to the other programs running.  (I was working in the Processes tab in Process Hacker.  There were also Services and Network tabs.)  I also noticed, by this point, that the Private Bytes number did seem to be creeping upwards, now reaching 520MB.  I wondered where it would be in an hour or two.

So now, could I put the brakes on GoodSync?  I right-clicked on it, there in Process Hacker, and saw at least three relevant options:  Terminate, Suspend, and Priority.  Of these, the only one that would put on the brakes without completely ending progress was Priority.  That one was familiar; I had seen the same options elsewhere, probably in Task Manager.  The options were Real Time, High, Above Normal, Normal, Below Normal, and Idle.  Normal was the default.  I had seen somewhere that Normal was the default for everything in Windows.

So, sad to say, this thing wasn't going to give me fine-tuned tweaking options, like "40% of Normal" or "Run only when computer is idle" or "Try to finish this process by tomorrow morning."  I realized that not all of these possibilities might be feasible in Windows 7.  And, wow, what about RAM?  GoodSync was up to 905MB of Private Bytes now.  For that matter, Internet Explorer (where I was writing this) was at 870MB (with eight tabs open, and after 50 hours of uptime, according to Moo0).  I was using RizoneSoft MemoryBooster to keep RAM available, but it didn't have options to put restrictions on individual programs, and hitting its Optimize Memory button at this point didn't have any effect upon the Private Bytes reported by Process Hacker for GoodSync and IE.  I guessed that the situation was that memory leaks couldn't be squeezed much -- that you might basically have a choice between letting the program run or shutting it down so that memory could clear.

I dimly recalled that GoodSync might have its own internal option to throttle itself.  A look at this point reminded me:  its Auto > General tab would allow a specific sync job to slow down file copying if the average download speed exceeded a certain value.  I wasn't quite sure how that would work, but I didn't think the problem was with the speed of downloads (i.e., how quickly they would travel across the ethernet cable between computers).  What seemed most demanding about GoodSync was its use of system resources to do its calculations of what needed to be copied.  In other words, I didn't care whether it was slowing me down because of calculations, or downloads, or for some other reason; I just cared that, overall, it was slowing me down.  And at this point I was not seeing anything specifically geared toward that.  And even if I had, I'd still have a similar concern for some other programs.

Further exploration in Process Hacker indicated that I had overlooked another possible location of options.  I right-clicked on the Process Hacker line for GoodSync and chose Miscellanous.  There, I saw at least three intriguing options:  I/O Priority, Page Priority, and Reduce Working Set.  I decided to see what would happen if I changed a bunch of settings to their minimum values.  So I changed GoodSync right-click Priority from Normal to Below Normal.  I didn't see any difference, there, between Below Normal and Real Time (the highest setting).  On, then, to Miscellaneous > I/O Priority.  It was set to Normal; I set it to Very Low.  Still no obvious difference in the demands on CPU, I/O, or Private Bytes shown in Process Hacker.  Next, Miscellaneous > Page Priority.  It was at 5 (the highest possible value); I set it to 1.  Finally, Miscellaneous > Reduce Working Set.  It was just an on-or-off option.  I turned it on.  No visible difference in the numbers.  I decided to turn off Reduce Working Set, putting it back to its default setting, since I didn't know what it was.  Seems I was wrong:  it wasn't a checked, toggling option; evidently I was just reducing the working set further (whatever that meant) every time I hit it.

Well, by this point, as a correction to my impression from a moment earlier, it seemed that something had changed after all.  (It helped to see this when I changed Process Handler > View > Update Interval to a slower setting.)  Maybe this change was due to my adjustments to the settings, or maybe GoodSync had finished something it was working on, but for whatever reason it had dropped from an I/O Total Rate of 20+ mB/s to more like 3 mB/s.  I suspected that I had now given myself the equivalent of an option to "Run only when computer is idle."  With all these priorities set so low, hopefully the computer would suppress GoodSync when I had other things to do.  The risk now was, no doubt, that GoodSync would never finish its tasks.  I would have to just let it run a while and see how that went.

After closing Process Hacker and letting a few days pass (along with a reboot or two), I returned to see what was happening with GoodSync.  The system had now been up for a little over two days, and at this moment the spinning system tray icon showed that GoodSync was actively at work.  PH showed GoodSync as having 1.14GB in Private Bytes allocated to it.  Its I/O Total Rate was not exceeding about 1.5 mB/s.  It looked like my settings had persisted.  I was not actively using that machine at that point, so I couldn't say whether there would still be noticeable slowdowns.  But it seemed unlikely.  Moo0 was reporting that the CPU, RAM, and hard drives were almost never fully burdened.  And yet GoodSync did seem to be getting its tasks done.

I was not quite sure whether Process Hacker right-click settings all applied only to the specific process that I had clicked on.  Some appeared to apply to all, or at least multiple, processes.  There was more to learn.  But at least it did appear that Process Hacker had enabled me to slow down a program that was grabbing too much of system resources, without noticeably impairing that program's functioning.

Thursday, April 21, 2011

A Two-Computers-Per-User Desktop Arrangement

I was spending a lot of time at my desk, doing word processing and other typical desktop work.  For this purpose I was using a customized Windows 7 installation on two networked computers for maximum productivity.  This post describes that setup.

I had previously thought that, ideally, I would have four computers:  one laptop; one test machine to hook up the occasional hard drive or other component for wiping, testing, etc.; and two desktop machines running side-by-side.  Since then, however, I had switched from Ubuntu back to Windows and had found this to be a good move.  So now I was doing very little testing and tinkering with hardware.  Therefore, I dismantled and sold the parts from the fourth computer.

With almost all of my work happening on just two computers, and with a stable Win7 installation on each, the focus now was on getting the most out of them.  I was using two desktop computers instead of one because there were still many occasions when a computer would experience downtime.  I would be doing drive maintenance or imaging, or would still have to reboot Windows now and then to clear its head or to complete a program installation or upgrade, or Win7 would be running just fine but there would be some scanning or something else going on that would tend to monopolize the machine for practical purposes.  I was not yet very impressed with multiple desktop software and was considering a return to VMware or some other virtual machine software, perhaps in a virtual appliance, though I wasn't sure I wanted to get back into the performance issues that had prompted me to try to use a native and/or bootable virtual hard disk or RAID array to improve the really bad performance I had started getting in VMware.  So the second computer was also useful as a simple way of having a pretty solid alternate desktop.  I could start up a project or leave a set of folders open there and just visit it occasionally, when the primary computer was doing its own maintenance or was otherwise unavailable for a while.

The starting point for this two-computer arrangement was to set up two machines that were almost identical in terms of hardware and software.  In previous years, I had thought it was best to have dissimilar machines, so as to maximize resources.  One machine or the other would have the right hardware or software to deal with almost any kind of system problem.  That belief was probably justified for some purposes.  Now, however, I was less patient with that, and it also seemed less necessary.  A lot of the old problems had gone away.  Meanwhile, it was much easier to learn how to maintain and troubleshoot just one set of problems, rather than have to learn the whys and wherefores of divergent sets of hardware and software.  For purposes of getting my work done, Windows 7 was a significant improvement over operating systems I had used previously, including Windows XP and Ubuntu 10.10, in terms of networking and other capabilities.

The customized Win7 installation (see link above) was not as easy as a canned, plain-vanilla installation, but once I had it set up, it had some advantages.  One important step was to make my work files available on both computers.  My first attempt in this regard was to use a Synology network-attached storage (NAS) unit as a simplified file server, but that hadn't worked so well for me.  In the second attempt, I used my home network (basically, just a router and cables to the two computers, though possibly a crossover cable would have sufficed even without the router).  After some contemplation, I went with GoodSync to keep the two computers directly synchronized with one another.  This was an important development.  When combined with appropriate program settings (e.g., setting Microsoft Word to AutoRecover files every minute), it meant that, if the computer I was working on suddenly crashed or otherwise became unavailable, I could usually switch over to the other machine and pick up right where I left off.

I used GoodSync to synchronize my data partition (drive D), not the program partition (drive C).  I also used it to synchronize parts of the INSTALL partition, including particularly the funky but advantageous shared Start menu.  GoodSync did not need to be running on both computers, so I installed it on computer A.  As the installation evolved, I found that computer A was handling most of my computer maintenance and other functions, while I did more of my moment-by-moment productivity stuff on computer B.  In particular, computer A was becoming my backup hub.  I would save a file on computer B; GoodSync would copy it to computer A; and then my backup software would copy it to other drives.  After a variety of unpleasant backup surprises, I had evolved to two distinct backup systems running on computer A.  In the first backup system, I was using Robocopy, as part of my customized installation (above), to make frequent, incremental backups to a separate partition on computer A.  This was one of the few regards in which computer A differed from computer B in terms of hardware:  it had three hard drives rather than two, so as to speed this internal copying (since it was faster to copy from one hard drive to another, rather than between partitions on the same drive) and make it safer (since a failure of one drive would usually not affect the other).  In the second backup system, I was using Beyond Compare to do daily manual backups to an external drive that I could carry or store offsite as needed.  These were manual in the sense that I had to click things to make them happen, and could therefore examine or at least spot-check what was going to be changed, if I wanted to.

Again, I could still use either computer to do my work, since they both had the same synchronized files and nearly identical software installations.  Nonetheless, as the functions of the two computers diverged, I found that I was not really utilizing both monitors most of the time.  On computer B, I tended to be opening PDFs, Word docs, Excel spreadsheets, Windows Explorer sessions, and webpages, among which I would copy text, links, and other materials.  I could open some of that stuff on computer A instead, but it was cumbersome to have this happening on two different computers, and for the most part it actually was not happening on computer A.  That computer, and its associated monitor, were mostly just sitting there, working up a file comparison in Beyond Compare or otherwise doing things that did not really need to be watched constantly.

What I really wanted was to make monitor A available for computer A, when I wanted to see what was happening on computer A, but to have monitor A also available for computer B, when I was doing my ongoing work on computer B.  This called for a keyboard-video-mouse (KVM) switch.  The PS/2 type of KVM was better for purposes of providing keyboard and mouse input during BIOS setup and in programs that would boot from a CD (e.g., Acronis Drive Image) and would therefore be at least partly unresponsive to a USB mouse and/or keyboard.  Unfortunately, I did not realize that the type of motherboard I had installed in both computers did not have two PS/2 ports, so I had to use a USB KVM.  It also seemed that I might have to spring for a more expensive DVI-compatible KVM, since I'd gotten some poor video performance when I had connected the monitor to the computer using the older D-Sub rather than the newer DVI kind of cable.  In recent months I had been using the KVM only for the keyboard, while leaving each monitor dedicated to one computer and experimenting with having a separate mouse for each computer, so that I could click without having to transfer keyboard (and, optionally, monitor) focus between computers.  It had lately occurred to me, though, that the D-Sub video quality problems might just be due to the quality of the video circuits on the motherboard.  So at this point I was planning to get a dedicated video card for each computer and see whether its D-Sub connection would work acceptably, in which case I could use the USB/D-Sub KVM for the keyboard and for D-Sub video with monitor A.  In other words, monitor B would continue to be dedicated to computer B, but monitor A would run to the KVM and could thus toggle between computers A and B.

This left the problem that, as I had discovered, when I was not seeing events on computer A, I tended not to use that computer.  That was not terrible -- it would still be there as a running backup, ready to jump into service when I needed it, unless it hibernated itself in the meantime -- but experience suggested that, if I could not just glance to see what was happening on computer A, I would tend not to toggle over there on the KVM and take a peek.  I thought of two solutions to this.  One was to set up a reminder that would prompt me, every hour or two, to interrupt what I was doing on computer B, toggle the KVM, and look at events on computer A as displayed on monitor A.  I suspected I might tend to disregard that kind of reminder, but I decided to give it a try.  An alternative was to get a small, dedicated monitor that would just always be displaying events on computer A, though I realized its tiny resolution would not very well display all the stuff that would tend to appear on my widescreen monitor A.  It looked like I could get a monochrome 10-inch Miracle Business MT209A CRT on eBay for $25 including shipping, but I didn't want the clutter or the extra power consumption.  What seemed like a more practical option was rather to go with a full-sized monitor dedicated to computer A.

That's where this matter rested for the time being.

Wednesday, February 23, 2011

Windows 7: Additional Tweaks

I had installed Windows 7, and I had begun using it.  As I went forward with that, I came across some additional adjustments that I would want to keep in mind for future reinstallations.  This post describes some of those tweaks and adjustments.

One thing that I would surely do sooner, in a future installation, would be to set up networking between computers.  In the past, it had been very frustrating and not easy, though no doubt ultimately it would have paid off.  With Windows 7, I now found it to be pretty easy.

I installed VMware Workstation for Windows, but found that it was always running.  To prevent it from starting automatically when I started the computer, I went into Workstation's Edit > Preferences and set it not to show an icon in the system tray.

I installed and uninstalled some programs:

  • I installed Virtual CloneDrive so that I would have the capability of mounting an ISO image as though it were a mounted CD, without having to actually burn the ISO to a CD and then put the CD in my CD drive.
  • I decided to try BinManager, as a way to automatically empty out items in the Recycle Bin after they had sat there for several days or a week.
  • I discovered that Win7 had a built-in defragmenting schedule (dfrgui.exe), and therefore I uninstalled IOBit SmartDefrag.
  • Jing, the video capture program, had a five-minute limit in its free version, so I uninstalled it.
  • I took the recommended steps to install GMail Drive as an alternate way to transfer files between computers and to keep selected files available from any computer if I didn't bring them along with me.  Basically, I downloaded it, installed it, right-clicked on the new GMail Drive entry in Windows Explorer, and went to Login As > my Gmail username and password, and waited for a little while in case I got the "enumerating folder" message that I was instructed not to disturb.  I didn't get that; I just went straight to usefulness.  I used it to store a copy of my customized Start Menu (below).
  • I used Jumplist Launcher to set up shortcuts to commonly used files and folders on the taskbar.
The obligation to log in after a reboot mysteriously reappeared, for some reason, possibly due to a reboot.  At this point, I discovered that my registry edit was not working.  So I went into Start > type "control userpasswords2" > uncheck "Users must enter a user name and password to use this computer" > Apply > OK.

I customized the "Move to" option that I had previously added via .reg file.  This customization allowed me to name specific folders to move to, without having to hunt for them.  To do this, I downloaded and unzipped Movetofolder.rar, created by Omnicoder.  I put the unzipped MoveToFolder folder in the appropriate place in my customized Start Menu, so that it would be available on my portable drive (where I kept a copy of the Start Menu, with its portable apps) and on network computers sharing that Start Menu.  In the MoveToFolder folder, I edited folders.txt to include a link to D:\Current, which was my central clearinghouse for random stuff.  I created a shortcut to MoveToFolder.exe.  I put that shortcut in my SendTo folder, which I found by pasting "%APPDATA%\Microsoft\Windows\SendTo" into the Windows Explorer address bar and hitting Enter.  (Later, I found an easier address to type there:  "shell:sendto.")  So now I could right-click on an item and select Send To > MoveToFolder.  That popped up a Move to Folder dialog, where I had to select the target folder (even though there was only one listed) and click Move.  It didn't close automatically after doing the move.  This was useful but more cumbersome than a direct Move to ___ Folder context menu option would have been.

Bizarrely, as I discovered, Windows 7 no longer allowed users to select multiple files and open them all at once in Windows Explorer.  The seemingly senseless loss of this feature had irritated many users.  I found that I could at least open all files of the same type by using that SendTo tweak.  For example, I added a shortcut to Acrobat, in this SendTo folder, and was then able to select a bunch of PDF files and right-click > Send To > Acrobat to open them all at once.  When setting this up, I found that some shortcuts would work in the SendTo folder and some wouldn't.  The link to Acrobat that I had on my Start Menu folder did not work; I had to find Acrobat.exe in C:\Program Files, create a shortcut directly to that, and then move that shortcut to the SendTo folder.

While I was in that SendTo folder, I edited its contents to remove SendTo targets that I didn't want.  The Elder Geek advised creating a shortcut to the SendTo folder and putting that shortcut in the SendTo folder, so that I could quickly add other programs or folders to that folder as I encountered them.  Having the option of sending a file to a SendTo option seemed less cluttered than adding applications to the context menu; I had a customized Start Menu for that.  In search of a sleeker way to move to a specific folder, I tried FileMenu Tools.  It had other functions as well.  The ones that interested me (i.e., that I didn't already have an established solution for) were Delete Locked File, Move to ..., and Pack to Folder, though it had a lot more to offer.  I also tried out Context Menu Editor.  It actually looked like ContextEdit might be the best solution, if someone could figure out how to make it work.  There were other tools that might also have done the job.  I suggested that they add a button for this purpose to the Classic Shell utility mentioned in the previous post. 

In that Classic Shell utility, I clicked on the Shell button (top right, and then top center, after I unlocked the toolbars and moved it) and adjusted some things.  I was looking for a way to make another tweak, to disable auto-refreshing of Windows Explorer file lists.  (Refreshing would happen when I was viewing files in IrfanView and would delete one of the files.  All of the other files that I had selected at that point would then be de-selected.)  I did a search, but unfortunately did not find a solution there.  I posted a wish-list item on that, too, at Classic Shell.  Auto-refreshing remained a problem.

From various sources, I developed some additional registry edits, to add to my previous .reg file:

Windows Registry Editor Version 5.00


; Add context menu option to copy a list of files to the clipboard
[HKEY_CLASSES_ROOT\Directory\Background\shell\copylist]
@="Copy List to Clipboard"
"Extended"=""
[HKEY_CLASSES_ROOT\Directory\Background\shell\copylist\command]
@="cmd /c \"dir /b /a:-d /o:n | clip\""
[HKEY_CLASSES_ROOT\Folder\shell\copylist]
@="Copy List to Clipboard"
"Extended"=""
[HKEY_CLASSES_ROOT\Folder\shell\copylist\command]
@="cmd /c dir \"%1\" /b /a:-d /o:n | clip"
; Remove context menu option
; [-HKEY_CLASSES_ROOT\Directory\Background\shell\copylist]
; [-HKEY_CLASSES_ROOT\Folder\shell\copylist]


I developed two tweaks using NirCmd.  One gave me a volume-muting hotkey.  The other gave me a program that would take screenshots as often as I liked, for as long as I liked.

Somehow, I overlooked the setting in Ultimate Windows Tweaker > System Performance > Enable support for 4GB of RAM on 32-bit Windows OS.  I enabled that now.  I did not pursue the hacks that apparently enable 32-bit Win7 to see 8GB of RAM, rather than the apparently arbitrary 4GB limit imposed by Microsoft.

Another step to incorporate in a tweaked Win7 installation was to install Firefox.  I overlooked it because I was thinking that the automated Windows migration from WinXP to Win7 would take care of that, but then I wound up not using that migration process.  Now I had to install Firefox, install and configure its extensions, and -- as I did do with Internet Explorer -- go to a YouTube page and play a video, so as to trigger a download of the Adobe Flash Player.  Although it acted like it wanted me to download and run an installer, that proved unnecessary.  Waiting a few seconds allowed the plugin installer to fire up and do the job.

While moving things around to accommodate my new system, I inadvertently deleted a bunch of them.  My backup was imperfect.  The solution was to run Recuva as soon as possible, before other changes to the drive would overwrite those deleted but still present files and folders.

In Firefox, I found that, in Google search results, it was hard to tell which pages I had already visited.  I wanted an add-on that would let me change the colors as the Webpage Decorator had done for me in Chrome.  Turned out to be easier than that.  In Firefox, I went to Tools > Options > Content tab > Fonts & Colors > Colors.  All I had to do was to change the colors for visited and unvisited links.  I also unchecked "Allow pages to choose their own colors, instead of my selections above," but that turned out to be a mistake:  it applied to all colors, not just font colors, so later I undid that.  Granted, these were global changes that would affect all visited and unvisited links in any webpage.  Not ideal.  But until I found an extension that took care of this, without the complexity of Firebug, this was my solution.

I belatedly discovered that my external USB drive was set to "Allow files on this drive to have contents indexed in addition to file properties."  To find and change that, I right-clicked on the drive > Properties.

At one point, I was unable to change drive letters.  There was a workaround:  in Regedit, go to e.g., HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices\DosDevices\F: and rename F to the desired letter, then reboot.  There was a more elaborate explanation and also the apparent alternative of tinkering with (apparently making some minor change to) the problematic drive in a partition manager (e.g., GParted).

As described in a separate post, I compared programs that could identify and delete unwanted duplicate files.  I expected that investigation to persuade me to switch from DoubleKiller to some newer alternative.  It didn't.  The search for a good detector of redundant files was related to a project to take back drive D, in the sense of moving the customized Start Menu and its duplicative program files to a separate INSTALL partition.  Once those program files were on the new Install partition, I could do duplicate sweeps on D again.

I repaired an important cause of sudden and complete system crashes on one machine.  The culprit, I figured out, was static electricity.  I was wearing a staticy fleece pullover.  Nice and warm.  It seemed to be able to provoke an instant reboot even when it just brushed against the headphone cord.  After replacing the pullover, I had no more of these sorts of crashes.

I experimented briefly with multiple desktop software and decided to install and use Dexpot.  I was not sure how *much* I would use it.  Due to the limitations of Windows multiple desktop (as distinct from genuine virtual desktop) software, I felt that probably my work would continue to be mostly in desktop 1 -- but at least it was there to try when I had some need or interest in doing some things on a separate desktop.

GoodSync emerged as a way to keep files synchronized up-to-the-minute on two computers.  With this, I was able to access my files immediately on two distinct computers, with each serving as backup for the other and remaining ready to go to work as soon as the other became bogged down in any system administration, rebooting, scanning, or other tasks that might otherwise take control of a machine.  With GoodSync in place, I put the Teamviewer investigation on hold, waiting for spring and the possible arrival of improvements to Input Director.

I had set aside two internal partitions for frequent data backup.  The concept behind these partitions was that I would set up a Robocopy script to mirror one internal hard drive to the other.  This was distinct from the daily backup to an external drive, manually managed via Beyond Compare, so that I could see what was changing.  This internal backup was intended to run without my involvement.  One of the scripts I used went like this:

:: ROBUP-DATA-INTERNAL.BAT


:: Requires installation of Windows Server 2003 Resource Kit Tools for XP; included in Vista
:: Download that from http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displayLang=en
:: Intended for frequent mirror backup of DATA partition to internal partition, excluding a few folders

set dest="Q:\\"
robocopy D:\ %dest% /MIR /R:2 /W:5 /REG /V /FP /COPY:DAT /XD $RECYCLE.BIN _gsdata_ "System Volume Information"


:: *  *  *  *  *  Syntax  *  *  *  *  *

:: MIR mirror
:: R retries
:: W wait time between retries
:: REG set R & W as default values in registry
:: V produce verbose report
:: FP include full pathname in output
:: COPY copy Data, Attributes, Timestamps
:: XD exclude these directories
 
With those scripts written, the next task was to automate them.  I went to Start > "taskschd.msc."  This opened Task Scheduler.  In the Actions pane, I clicked on Create Basic Task and essentially just filled out the form.
 
I did a search and found instructions on how to modify the PATH in Windows 7.  The PATH was just the set of places where Windows would look to find a program.  So if I typed a command referring to the program xyz.exe, but if xyz.exe was in a folder where PATH would not look, xyz.exe would not run.  To add that folder to the path, I could run a command like "PATH %path%;[newfolder]" where [newfolder] would be replaced by the complete path (e.g., D:\Scripts) where I wanted Win7 to look for these additional commands.  I added a PATH command of this sort to my STARTUP.BAT file

I found another page on converting Win7 to WinXP format. 
 
In this tweaking process, I discovered something new about myself.  I discovered that I was one of those many people for whom the Task Scheduler (taskschd.msc) program included in Windows 7 would not run a batch file.  In my case, it would run one batch file, but it would not run another one.  I compared the two on all points, including their Properties and their Task Scheduler settings.  There seemed to be no difference.  After spending probably two hours trying to resolve this issue, I looked for alternatives.  One, which I quickly rejected for complexity, was to use Windows PowerShell to schedule batch files.  I was not able to find a Wikipedia page or other comparison of the program names that I did encounter, but it seemed there were enough freeware program schedulers so that I could dispense with the paid ones, such as Advanced Task Scheduler.  Free options I found included Splinterware's System Scheduler, Freebyte Task Scheduler, M2 Launcher, nnSoft Lite, WinUtilities Free Edition, Kirby Alarm and Task Scheduler, and Z-Cron.  Of these, WinUtilities had by far the most downloads on CNET, probably because it was a multipurpose utility suite.  Unfortunately, the scheduled tasks feature was not available in WinUtilities' free edition.  Several of the others -- System Scheduler, Kirby, nnCron, and M2 -- were old programs, not updated for Windows 7.  Both Z-Cron and Freebyte had been recently updated.  I had heard good things about Z-Cron previously, and decided to try that first.  Unfortunately, the installation process was pretty ragged, complete with Notepad display of a .dll file, and once the program was running, I had to use Task Manager (Ctrl-Alt-Del) to kill it.  I decided to uninstall it and try Freebyte.  The uninstall process froze; I had to reboot.  But even then, it would not "de-install," as the shortcut put it:  I got "Falscher Aufruf."  (Some of the dialogs were in German.)  I deleted its program file manually and switched to Freebyte.  Freebyte turned out to be portable, which was a plus.  Unfortunately, its options were very basic:  run once, daily, or weekly -- not monthly or yearly, and not every ___ days or ___ weeks.  I decided to try re-installing Z-Cron, just in case it was a fluke.  I still got the .dll in Notepad, but otherwise the installation went better this time.  It had more scheduling options than Freebyte.  I decided to set up some tasks and try Z-Cron out.  It had quite a few tasks built in (e.g., alarm clock, empty trash) and ready to be scheduled, along with whatever I would want to schedule.  It was not very well organized.  I would get in the habit of closing windows to get back to the main menu; but then it turned out I was at the main menu, although in an unfamiliar place, and would thus inadvertently close the entire program.  Also, once I lost that list of built-in tasks, it was hard to find it again.  (The secret:  Task > Z-Cron Task tab > Tools.)  Unfortunately, after all this, the reason that my batch file would not run in Win7's Task Scheduler was the same reason why it would not run in Z-Cron, or so I assumed, because it was not running in Z-Cron either.  After all this, I went back and played with the Task Scheduler options some more, and found that the solution in my case was to list only the name of the batch file, without its path, in Task Scheduler's Actions > Edit > Program/script box, and put the path instead in the "Start in" box, without quotation marks.  Again, on uninstalling Z-Cron, I still got a display of a .dll in Notepad, and again it froze.

I discovered the possibility of right-clicking on the Windows Explorer icon on the taskbar, right-clicking on a folder location that I would often visit, and pinning that location to that icon.  This gave me a quick go-to list of favorite Windows Explorer locations, available by right-clicking on the WindEx taskbar icon (which was itself pinned to the taskbar).  This turned out to have some odd quirks, so as time went on I wasn't sure how much I would be using this.

I also discovered that I could add a slideshow to my Win7 desktop, using photos in a specified location.  This called for right-clicking on the Desktop > Personalize > Desktop Background (at bottom of screen) > Browse to pictures folder.  But this did not work for me, probably because I had no pictures in the folder to which I navigated.  The pictures were in subfolders under that folder, and apparently this program could not recurse those subdirectories.

Since AvaFind Pro didn't run well in Win7, I tried replacing it with Instant File Find.  But I found that IFF lacked valuable features.  I wondered whether I could use Win7's compatibility features to make AvaFind work after all.  I ran a search and found Microsoft's advice on how to proceed.  Their page told me that I could run the Program Compatibility Wizard at Control Panel (category) > Programs > "Run programs made for previous versions of Windows."  But they warned, "Do not use the Program Compatibility Wizard on older antivirus programs, disk utilities, or other system programs because it might cause data loss or create a security risk."  I wasn't sure whether AvaFind would count as a disk utility or system program for that purpose.  I decided not to risk it.  Instead, I took their advice to right-click on the AvaFindPro.exe installer file and choose Properties > Compatibility Tab > Compatibility Mode > WinXP SP3.  I also clicked on "Change settings for all users" and in both I said "Run this program as an administrator."  I exited Instant File Find, but AvaFind would not run until I rebooted.  Sadly, this did not do the job; AvaFind was still forgetting that I had bought a Pro license key, each time I ran it.  On one computer, it wouldn't even install.

To enable Audacity to record streaming audio, I went into Control Panel > Sound > Recording tab > right-click on empty space > make sure both are checked ("Show Disabled Devices" and "Show Disconnected Devices") > enable Stereo Mix > OK.  Then, following advice, I started a new session of Audacity and went into Edit > Preferences > Audio I/O tab > Recording > Device > Stereo Mix > OK.  That didn't work, so I ran a cable from the computer's Line Out (speaker) port to its Line In port.  I noticed that this gave me a Line In option in the Control Panel > Sound dialog.  Unfortunately, it still did not let me record streaming audio.  I was not able to resolve this.

Saturday, January 22, 2011

Windows 7: RAID or Mirror Across Computers?

Where to put the data ... hmm.  I had a home network with two computers running Windows 7.  If the data I needed to work with was on one computer and it went down or had one of those frequent Microsoft maintenance or service interruption needs, I couldn't get to it from the other computer.  But if I put the data on a server, then (a) I had to buy and maintain the server, cables, routers, etc., (b) I had slower access times, (c) the data would then be unavailable to *both* machines (unless I wanted to swap out one or more hard drives) if the server went down, and (d) I had found that, if I accidentally corrupted or deleted the wrong file, a server might not be willing to undelete it.  Not a big deal, assuming you had good backup, but there were painful exceptions.

So it occurred to me:  can you put the data on one computer, so that it can function as a standalone, and also put the data on the other computer, so that it is a standalone too, but then have a constant RAID or mirror arrangement between the computers, so that whatever you do with the data on one computer is immediately duplicated on the other computer?  That way, you've got local speed, no server, and redundancy during downtime on either machine.  Basically, two-way mirroring:  when a file is modified, it checks the other computer, and the two of them figure out which version is newer, and it overwrites the older version on the other machine as well.  All you need is a router, if that.

I figured possibly everybody else already knew the answer to this.  But since I didn't, I started with a search.  Only six hits.  It looked like the concept of "RAID between computers" was a nonstarter.  Alright, a different search.  Wow, "mirror between computers" produced 13 hits.  But, OK, not to complain, it seemed most of those hits were for TreeNetCopy.  Take it out of the equation, and the search produced only five hits.  So TreeNetCopy seemed to provide the path forward.  But it didn't look like CNET, PCMag, or other big-name sites had reviewed it.  I went to the product's home website and found out why:  it was for systems using Windows NT or Windows 2000.

Apparently mirror and RAID were not the concepts I wanted.  How about incremental backup?  You couldn't have it running constantly; it would have to finish one scan of the system's files before it could start on the next one.  So maybe you'd set it to run every 15 or 30 minutes, or however a scan would take to finish, across the network connection.  This wouldn't be nearly as good as software that would detect and propagate changes as soon as they were made, but I wasn't seeing how to find anything like that.  With a 15- or 30-minute delay, you couldn't have someone being able to open the file on computer B as soon as someone else updated it on computer A, unless possibly if you had a script that would somehow be able to run the incremental backup manually for a given folder by just maybe choosing a right-click context menu option.

Alright, a different approach.  I had been using Beyond Compare, a file comparison tool.  It still looked like one of the more capable file comparison tools, so how about using it?  As I was thinking about that possibility, I realized that I didn't like the idea of having to do a right-click or other manual update.  The computer could crash before I got around to that, and then I wouldn't have the current data in the parallel folder on the other computer, and therefore really couldn't just keep right on working where I left off.  I had only used Beyond Compare as a manual comparison tool, where I would start it up and it would run for a while and compare directories and then show me what needed to be mirrored to my backup drive, and then I would click the buttons necessary to do that.  I knew it was possible to write scripts to automate some of this, but it seemed unlikely that scripts would help Beyond Compare remain up-to-the-minute on all of the file changes made on the system.  Most likely, I could set up scripts to run in some frequently used folders, and maybe even to automate the mirroring of those folders, but other folders would be left out in the cold.  Possibly I could have multiple scripts doing comparisons of more- and less-frequently used folders on different schedules, so as to increase the likelihood that most folders would be mirrored relatively often.  But with enough scripts running simultaneous file comparisons, I'd start to take a performance hit.

Lacking a better option, I did a search to learn more about Beyond Compare scripts.  The search came up with a number of interesting concepts, right there among the top ten hits.  One was the concept of automated synchronization.  Duh!  Of course.  Synchronization was the Windows term for what I wanted.  So I did a search for that, dropping Beyond Compare for the moment.  But the only thing that came of it was the discovery of Super Flexible File Synchronizer, which cost $60 for a two-year license (unless, for some bizarre reason, I would think that I could do without the pro version's ability to copy ZIP files!).  It did look like it might have some advantages over Beyond Compare, such as the ability to detect that I had moved a folder, so that it could just repeat the move rather than delete the folder from one location and create it in another (which might involve a lot of copying, if it was a large folder).  It had very good ratings on CNET.  I could download and try it out free for 30 days.  But it was ultimately still a backup program, running on a schedule, not a mirroring program, so I was still basically working with the same scenario:  design a set of backup scripts, profiles, or whatever, and set them to run at different frequencies, backing up what I would consider the most heavily used folders most frequently.

TopTenReviews ranked Super Flexible File Synchronizer eighth in its list of sync programs.  Their comparison page had a number of relevant criteria, including the ability to do bidirectional sync, to mirror files, and to operate across a network.  It actually looked like their number two program, GoodSync ($19.95), had better features for my purposes than their number one choice, Syncables 360 ($39.95).  Their review of GoodSync made it sound good indeed.  They said it couldn't sync or merge Microsoft Outlook files, which was OK because I was using Thunderbird.  (Later, I encountered a review by a user who said s/he was using it for this purpose, so I assumed they had updated the program.)  They said that working over networks could be complicated.  I wasn't sure if they meant that as a generic remark that would be relevant to all kinds of work over networks.  They seemed to rank it number two rather than one because it "lacks some of the advanced features professional users expect."  CNET's review likewise ranked it number two, but in the category of "file management."  I wasn't sure what they considered the number one program; their webpage didn't indicate which criterion they used for that ranking.  But GoodSync was the most frequently downloaded program during the prior week.  GoodSync's awards webpage mostly listed awards and positive reviews that were at least a couple of years old.  So apparently it had been created and was now coasting.  I did a search among its many reviews on CNET, looking for more info about using it on a network.  Unfortunately, CNET's links to specific reviews weren't working for me at that point, so I wasn't able to get details, but what I was able to read from the summary results was positive with the exception of one person for whom GoodSync did not work well.

There were hardware options.  SyncSharp offered a device that would synchronize via USB.  It sounded similar to The Tornado and to the Windows 7 Easy Transfer option.  I didn't want an additional device, and since ethernet was faster and was already in place, I didn't want to use USB.  For purposes of speed and also capacity, not to mention reducing dependency on external data sources, I was obviously not going to be interested in a cloud (i.e., web-based) solution, even if I had found one that offered constant, continuous, real-time synchronization.

It turned out that CNET had another category, for "data transfer & sync software."  As with some other CNET searches, I looked at the top 30 both in terms of downloads last week and user ratings.  Setting aside those that were for special purposes (e.g., Blackberry, Outlook), and focusing on those that were for Windows 7, I found that only two were free:  CopyTo Synchronizer, which had only two votes and which I therefore deemed insufficiently tested, and Microsoft Live Mesh, which had only one vote but which I was willing to assume was better developed.  The nonfree alternatives that came up in this search included BeyondSync, ViceVersa Pro, Easy Computer Sync, and Syncables 360 Premium.  I reduced this set to Live Mesh, Beyond Sync, and ViceVersa.  A search for further information on Live Mesh suggested it was web-based, more like DropBox, leaving me to focus on the other two.  A search led back to a TopTenReviews comparison -- it may have been the same one as before, but a couple of weeks had passed by thie time -- naming GoodSync (above) as No. 2, ViceVersa as No. 5, and BeyondSync as No. 10.  Of the ten, the ones offering bidirectional sync, network synchronizing, and Windows 7 support were these three plus Syncables 360, SugarSync, Laplink, and Super Flexible.  Most of the same names also appeared in a CEOWorld review.  I eliminated SugarSync as another cloud solution.  The TopTen review for Beyond Sync made it sound unappealing.  A dotTech review echoed that. 

I ran a search looking for comparisons of Syncables against the others that also sounded good for bidirectional synchronization.  A couple of reviews alerted me to the feature, evidently present in GoodSync but not all others, of being able to see which changes would overwrite.  I began to get a sense that Syncables was more of a glossy product, designed for people who wanted simple and trouble-free synchronization without necessarily having an option to scrutinize every step of what was happening.  Having been burned by the occasional backup program that would not save (and would also not tell me that it was not saving) files of a certain kind, or nested too deep, or had an umlauted character in their filenames, or were otherwise secretly exempt from what I thought was happening, I had become more inclined to use transparent software.  At least until I gained a lot of trust and experience with a program, I wanted to see what it was doing.  So this feature of GoodSync appealed to me.  I noticed, also, that a review described Liuxz Sync as being "of most use to users that need to carryout real time synchronizations over a network or between hard drives."  As I continued to look at other opinions, ViceVersa still sounded relatively good too.

On this basis, I decided to start with GoodSync, as described in a separate post.  After some days of using it, and comparing its results against an external backup drive via manual comparisons using Beyond Compare (as described in more detail in that other post), I concluded that GoodSync was a good product for this purpose.  I set its sync rules so as to check most frequently those partitions in which I was most likely to make changes.  For practical purposes, I could change files on one computer and I would see those changes on the other computer when I went looking for them.

In short, I wound up using GoodSync to synchronize files on two computers on a home network.  The files were generally available on the other computer within minutes.  I did this without using a server.  That is, the files were available locally on each computer, so that I could keep right on working if the other one went down.  I arranged backup via external drive, and I occasionally checked that external drive against the internal drive manually using Beyond Compare.  I had better performance than on a network, and was not very vulnerable to network problems; presumably I could have set up the same arrangement via crossover cable, without even having a router.  This really felt like a solution that I had been seeking for years.