Default synchronization directions

Get help for specific problems
Posts: 2
Joined: 10 Feb 2010

mabe84

Hi, first thank you for this great tool! :-)

Does it matter what the default synchronization directions are? I'm syncing 2
Computers with 1 USB-hard disk drive and i don't know if it matters where to
put the sync.ffs_db?

Should I have only ONE sync.ffs_db, which is stored on the USB-HDD, or should
i have two differnt sync.ffs_db files on both computers?

The problem is, that i'm trying to use only one sync.ffs_db file on the USB-
HDD. When i first synced my laptop with the USB-HDD, i got it to store the
sync.ffs_db on the USB-HDD. But now i try to sync my PC with the USB-HDD and i
don't get FreeFileSync to use the existing sync.ffs_db on the USB-HDD. So when
i swap the side per button or manually there is always this warning:


> Initial synchronization: The database file is not yet existing, but will be
created during synchronization:
"C:\MyDirectory\sync.ffs_db"

Setting default synchronization directions. Please check whether they are
appropriate for you.



What are the appropriate default synchronization directions and how can i
change them?

Cheers!
User avatar
Site Admin
Posts: 7056
Joined: 9 Dec 2007

Zenju

> Does it matter what the default synchronization directions are?
If no sync.ffs_db file is existing on either side FFS will set default sync-
directions. These settings are safe, but will copy file existing only on one
side to the other: Concerning data integrity this operation is harmless, of
course, but it may be inconvenient if the user later has to remove files, he
didn't want to be copied, but deleted instead. So it is suggested to revise
the default settings manually.

> i don't know if it matters where to put the sync.ffs_db?
The sync.ffs_db file is completely managed by the tool to keep track of
changes on either side of synchronization. It is not supposed to be modified
by the user.

> The problem is, that i'm trying to use only one sync.ffs_db
This doesn't make sense, if you want a sync that treats both sides equally.
Maybe you want to simply mirror one side to the other? In this case, don't use
<Automatic> mode but choose "Mirror" instead.

Regards, Zenju
Posts: 2
Joined: 10 Feb 2010

mabe84

Thank you for your quick reply, Zenju.

I'm trying to sync my laptop and my pc with a USB-HDD because they are at
different locations. So i want to propagate new files, updates and deletions
in both directions.

I don't want to edit the sync.ffs_db on my own, FFS should manage this file /
these files. But i recognised that FFS swaps the folder where the sync.ffs_db
file is stored, when i swap the folders with the "Swap sides"-button. In this
case neither on the left nor on the left side a sync.ffs_db existed. I
regcognised this in the "Initial synchronization"-warning by the different
path before the the sync.ffs_db file. This happend while syncing my laptop
with the USB-HDD.

While trying to sync my pc with the USB-HDD i didn't recognise this effect.
FFS always tried to create the sync.ffs_db on my pc. I think the reason was
the existing sync.ffs_db on my USB-HDD, is this right?

Then i thought about the fact, if it matters if i use only one sync.ffs_db on
the USB-HDD for syncing two computer with one USB-HDD (or flash stick...) OR
if i have to use two sync.ffs_db files (each for one pc) OR if it doesn't
matter at all. These toughts werde made under my demands to propagate all new
files, updates and deletions in BOTH directions.

Perhaps you could tell my, if it matters where to store sync.ffs_db
file/files. :-)

Regards, mabe
User avatar
Site Admin
Posts: 7056
Joined: 9 Dec 2007

Zenju

> But i recognised that FFS swaps the folder where the sync.ffs_db file is
stored
The error message is a bit misleading here: FFS always needs both sync.ffs_db
files from both sides to detect changes, if either one is missing you'll be
notified. Now if you swap sides, the error message is about a different one,
but this doesn't change anything: still both db files (more precisely db-
entries) are needed.

So my suggestion is: Just do as the warning message suggests and set sync
directions initially. A second sync won't bother you again as from then on,
the tool can make decisions by itself. And: Don't bother/touch the sync.ffs_db
files and you'll be fine :)
Posts: 10
Joined: 25 Mar 2003

drewkeller

I still get the message about the sync database when moving the flashdrive to
a different computer. Just like mabe, I have two computers that I am syncing
to each other by carrying a flashdrive between them.

1. After working on files on my home computer, I execute _home_flashdrive.ffs_gui_ to sync files TO the flash drive.
2. Then when I get to work, I use _work_flashdrive.ffs_gui _to sync my work computer FROM the flash drive. --> database warning occurs
3. Before leaving work, I use _work_flashdrive.ffs_gui_ to sync files TO the flash drive.
4. When I get home, I use _home_flashdrive.ffs_gui_ to update my home computer FROM the flash drive. --> database warning occurs

I use different files because the synced folders are in different locations on
each computer. Plus, the flashdrive is a different drive letter on each
computer. Perhaps there is a better way to do this?
User avatar
Site Admin
Posts: 7056
Joined: 9 Dec 2007

Zenju

You'll see this message ONCE per folder pair you synchronize initially:
Once for "Home <-> USB" and a second time for "USB <-> Work"

So it's two times in total, this is normal.

> synced folders are in different locations on each computer.
Maybe you can take advantage of environment variables here?

> Plus, the flashdrive is a different drive letter
You can see the helpfile under "variable drive letters" for a suggestion how
to solve this issue.
Posts: 10
Joined: 25 Mar 2003

drewkeller

> You'll see this message ONCE per folder pair you synchronize initially:
Once for "Home <-> USB" and a second time for "USB <-> Work"


I am still seeing it EVERY time.

Here's what I have set up now based on your suggestions.

1. Moved the sync.ffs_gui to the USB and set the USB folder to the left side so the database would be created on the USB rather than on each computer.
2. Created a windows batch file for each computer to call the _sync.ffs_gui_ file on the USB.

Here's a sample batch file (the USB drive letter and location of FreeFileSync
executable is different on each computer):



:: In the FreeFileSync window, set the folders as follows
:: LEFT: %FlashDriveDir%
:: RIGHT: %ComputerDir%
:: -------------------------
set ComputerDir=%~dp0
set FlashDrive=K:
set FlashDriveDir=%FlashDrive%\Projects_support\PanelDatabase
set FreeFileSync="G:\Utility\File\FreeFileSync\FreeFileSync.exe"
:: -------------------------
cd %FlashDriveDir%
%FreeFileSync% %FlashDriveDir%\sync.ffs_gui



I tried setting the "relative" folder for the USB, but FFS kept thinking that
I was executing the sync file from my computer even though the sync file is on
the USB (being called by a batch file).
User avatar
Site Admin
Posts: 7056
Joined: 9 Dec 2007

Zenju

> I am still seeing it EVERY time.
Then we have a problem here... Let's see:

> so the database would be created on the USB rather than on each computer.
I'm a bit puzzled about this: With "database" do you mean the TWO
"sync.ffs_db" files? If so, they are created automatically in BOTH
synchronization base directories by the tool. If you do any change to one of
these files, including moving or deleting them, then this is already the root
of the above problem.

> but FFS kept thinking that I was executing the sync file from my computer
You need to change the current volume: "cd %FlashDriveDir%" is not enough,
instead simply add "%FlashDrive%", then it should work.
Posts: 10
Joined: 25 Mar 2003

drewkeller

> they are created automatically in BOTH synchronization base directories by
the tool.


Hmm... I added a line to the filter to ignore these so I'll try it tomorrow.
For some reason I thought it was only creating a database file on one side.

cd %FlashDrive% works better :/
User avatar
Site Admin
Posts: 7056
Joined: 9 Dec 2007

Zenju

>For some reason I thought it was only creating a database file on one side.
That's not entirely your fault: The error message text talks about "THE" db-
file, although there is one file per base sync-directory. I've adapted these
texts for v3.4 to hopefully make this more clear.

> I added a line to the filter to ignore these
The filter is not respected when creating or reading sync.ffs_db files, so
this doesn't matter.
Posts: 10
Joined: 25 Mar 2003

drewkeller

I'm not sure what's wrong but I'm still getting the warning. Do I need to
manually delete the ffs_db files or something? It sounded FFS would rewriting
over them with the correct info.

I changed the batch file to vbscript which is a little more flexible.



'
' INSTRUCTIONS:
'
' In the FreeFileSync window, set the folders as follows
' LEFT: %FlashDir%
' RIGHT: %ComputerDir%
'
' Change the settings below for each computer
'

ComputerNameA = "HOME"
FlashDriveA = "J:"

ComputerNameB = "WORK"
FlashDriveB = "K:"

ComputerDir = GetCurrentFolder()
FlashDir = "\Projects_support\PanelDatabase"

'
' DO NOT CHANGE ANYTHING BELOW THIS LINE
' (unless you need to add logic for additional computers)
'-------------------------------------------------
'

Set wshShell = CreateObject( "WScript.Shell" )
Set wshEnv = wshShell.Environment( "PROCESS" )
Q = """" ' for making quote marks more readable

' Detect which computer we are using and prefix the appropriate drive letter
' to the flashdrive folder name
ComputerName = wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )
Select Case ComputerName
Case ComputerNameA: FlashDrive = FlashDriveA
Case ComputerNameB: FlashDrive = FlashDriveB
Case Else
Msg = "This computer is not recognized:" & vbCrLf & _
vbTab & ComputerName
WScript.Echo Msg
WScript.Quit
End Select

' Add environment variable for use by FreeFileSync
AddEnvironmentVariable wshEnv, "ComputerDir", ComputerDir
AddEnvironmentVariable wshEnv, "FlashDir", FlashDir
wshShell.CurrentDirectory = FlashDrive
CommandLine = Q & FlashDrive & FlashDir & "\sync.ffs_gui" & Q
ShellRun CommandLine, 1, True

' Clean up
Set wshEnv = Nothing
Set wshSystemEnv = Nothing
WScript.Quit


'
' Methods
' ------------------------------------------------------
'
Sub AddEnvironmentVariable(objEnv, name, value)
objEnv(name) = value
End Sub

Function GetCurrentFolder()
Set fso = CreateObject("Scripting.FileSystemObject")
GetCurrentFolder = fso.GetParentFolderName(WScript.ScriptFullname)
Set fso = Nothing
End Function

Sub ShellRun(sCommand, intWindowStyle, bWaitOnReturn)
dim boolErr, strErrDesc
On Error Resume Next
'Set wshShell = CreateObject("WScript.Shell")
wshShell.Run sCommand, intWindowStyle, bWaitOnReturn
if Err Then
boolErr = True
strErrDesc = Err.Description
end if
'Set wshShell = Nothing
On Error GoTo 0
If boolErr Then
strErrSource = "ShellRun method" & vbCrLf & "Command: " & sCommand
Err.Raise 5105, strErrSource, strErrDesc
End If
End Sub

[
User avatar
Site Admin
Posts: 7056
Joined: 9 Dec 2007

Zenju

> Do I need to manually delete the ffs_db files or something?
No, like I said they're completely managed by the tool.

So what is the detailed error message you see each time?

If it is "The database file is not yet existing", is the message correct, and
the file is indeed not existing or is it there, but not found?
Posts: 10
Joined: 25 Mar 2003

drewkeller

Here's the message I see.


Incompatible synchronization database format:
"J:\Projects_support\PanelDatabase\sync.ffs_db"

Setting default synchronization directions. Please check whether they are appropriate for you.
User avatar
Site Admin
Posts: 7056
Joined: 9 Dec 2007

Zenju

Ah...... on one PC you're using the 32-bit version of FFS on the other the 64
bit! That's the problem here, both produce binary incompatible database files.
Posts: 10
Joined: 25 Mar 2003

drewkeller

Sure enough. I installed the 32bit version on my Vista machine and it's
working great now. Thanks!

I wonder if instead of using specific folders, the program could use the
concept of Locations. A Location would consist of ...
* LocationID - stored in the database files instead of the folder path that's probably in there now
* DeviceID - computername, harddrive ID, USB drive ID (do they have IDs?) (works over a network?) All else failing, I suppose the computername and path could act as the ID
* Path - path from the device's root to the top folder that's being synced
* FriendlyName - Displayed as the location in the UI

So now, the user can set up two locations and then perform a sync. If he goes
to another location and runs the program and it doesn't find one or more of
the locations, it can ask to set up a new location instead of giving an
ominous warning. Plus, maybe these .bat files and scripts could be done away
with.

Just thinking, not sure if this would actually work.
User avatar
Site Admin
Posts: 7056
Joined: 9 Dec 2007

Zenju

The concept of location you describe is pretty similar to the concept that's
actually implemented: The full path name is nowhere saved so it is truly
independent from the name of the sync-folder (thous handling variable drive
letters or sync-directory moves)

> instead of giving an ominous warning
This has nothing to do with the design of the <automatic> mode. It's just a
technical limitiation that the files are binary incompatible. I'll see if I
can find a solution for this.