forked from dimikot/dklab_realsync
-
Notifications
You must be signed in to change notification settings - Fork 1
/
README.txt
184 lines (134 loc) · 8 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
dkLab RealSync: replicate developer's files over SSH in realtime
Dmitry Koterov, http://en.dklab.ru/lib/dklab_realsync/ (C)
License: GPL
RealSync allows you to establish a one-way realtime directory
synchronization from your local folder (typically with a site's
source code) to a server's remote directory (typically - a
development web-server).
When you create, change or delete any file/directory at your local
folder, it will be automatically created, modified or deleted at the
remote side, in realtime.
Main RealSync benefits:
1. It is extremely stable, even on unstable internet connection. If internet
is temporarily unavailable and then becomes alive, RealSync will recover
and continue working, even if many files are changed during that period.
2. It is damned fast even on extremely large directories! Just change a file
and you'll see these changes IMMEDIATELY at the remote side (it's true for
Windows, MacOS X, Linux). If you change lots of files at once, RealSync will
run RSYNC automatically to reflect all changes if it thinks that a single
RSYNC would be faster than individual files transfers.
3. It guarantees that no missynchronization happens, because it performs
a full (but fast!) synchronization using the RSYNC utility when it knows
that a missynchronization may take place (e.g. RSYNC is run when you run
RealSync initially).
4. On Windows - it minimizes to tray and dings a quiet sound on each change
which is successfully transferred.
5. It has an installation wizard which automatically creates all needed SSH
keys to access to your remote server with no need to enter your password
each time.
So, RealSync is like RSYNC, but, in addition to RSYNC, it lives in the
background after an initial fast synchronization and watches for all
changes at your side.
Usage for Windows
-----------------
1. Place contents of this directory somewhere, e.g.:
"C:/Program Files/dklab_realsync/"
2. Create a desktop shortcut for command-line:
"C:/Program Files/dklab_realsync/realsync.exe" SOURCE_DIRECTORY_WHICH_IS_REPLICATED
3. Click to that shortcut and follow interactive wizard's instructions
(the wizard appears only first time; next time it will not bother you)
Settings are located in the .realsync file in the source directory.
Usage for Linux, FreeBSD, MacOS X (darwin)
------------------------------------------
1. Place contents of this directory somewhere, e.g. (or somewhere else):
/opt/dklab_realsync/
2. Create a desktop shortcut for command-line:
perl /opt/dklab_realsync/realsync SOURCE_DIRECTORY_WHICH_IS_REPLICATED
3. Click to that shortcut and follow interactive wizard's instructions
(the wizard appears only first time; next time it will not bother you).
Why use RealSync?
-----------------
At the time I know no existed network filesystems which perform good caching
on a slow or unstable internet connection. If you mount a remote directory from
a development web server into your local machine using Samba, NFS, sshfs etc.,
it becomes extremely slow when you perform e.g. a full project searching or
update files using SVN or GIT directly at your local machine.
RealSync allows you do use other method. You create a folder at your local
machine and then say RealSync to mirror all changes in this folder to
a remote web server. So you work at your local machine, you modify files as
you like (using various text editors if you want to), perform deep searhes
through all the files etc. And you are sure that the latest version of the
directory is always at the remote side.
So you edit your site locally, but view changes at the remote web server.
"But my Eclipse/NetBeans/PHPStorm supports SSH synchronization already!"
------------------------------------------------------------------------
They typically do it not very good. E.g. try to do the following:
1. Close your favorite Eclipse/NetBeans/PHPStorm temporarily.
2. Open e.g. Notepad and change a number or files (or, better, add a
directory with a couple of megabytes).
3. Break something at the remote side manually (e.g. remove a couple
of directory directly at the server - just for fun).
3. Run Eclipse/NetBeans/PHPStorm again.
4. Enjoy your missynchronized directories!
Every IDE I test time to time have the same defect: they know nothing about
RSYNC, and, of course, about other editors. They do not try to keep the local
and remote directories identical all the time, because they have NO FEEDBACK
from the remote side. RSYNC, which is used by RealSync as one of the
synchronization method, has this feedback, so RealSync keeps local and remote
directories identical.
"Why a bi-directional synchronization is not supported?"
--------------------------------------------------------
Before answering this question, I'd like to say that typical RealSync usage
is to pass your local files to a remote development web-server, to allow
you to work with your favorite IDE with no lags and problems. Remote side
is only a mirror, it doesn't have its own meaning instead of the one:
it's an exact copy of the local side. So, if you want to work with console -
do it at your local machine. If you use Git or other version control
system - do it at your local machine, not at the remote one. If you need
grep - do not use grep, use your IDE's search, it is much more handy (or - use
grep at your local machine again; for Windows you may install e.g. UnxUtils
to work approximately as comfortable as you do it in Unix). You may even have
no SSH access to a remote web-server you are syncing your local copy to.
So, RealSync supports only one-way synchronization: e.g. from your local
notebook to a remote server. All changes which are made directly at
the remote servers's side will be overriden by local files, even if the
local files are older than the remote ones.
This is "by design" and is not a problem. If you need a bi-directional
synchronization, you should possibly use another tool, not RealSync (and
be ready to the risk of losing your changes in non-obvious conflicts).
"Wait, but I have a notebook at work and a notebook at home, so I want
both of them to be synchronized to each other via the remote server!"
----------------------------------------------------------------------
I suppose you don't want THIS. You really want your two notebook to be
synchronized to EACH OTHER. The remote server is fully independent of
this case - remember, it's only a mirror to make a remove web-server
and a local developer happy.
But if you want two local notebooks to be synchronized to each other,
and RealSync works only between a noteboot and a remote server, why
RealSync should help with that in realtime?
Use Dropbox, Luke!
Seriously: http://dropbox.com - this is an amazing service to synchronize
one computer's folder to another one. Store your local folders at Dropbox
subdirectories. It will help you perfectly, plus - it will backup your
changes on a cloud storage, so you will never lose your changes.
When you want your two notebooks to be synchronized, Dropbox is a great
choise, you do not need RealSync for that.
"But in our company we use a lot of console tools to work with the sources:
the tools must be run at the server and has hard-coded pathes etc."
---------------------------------------------------------------------------
Oh, that's not good. Consider to change your employer. :-) That was a joke.
(Maybe.) So, RealSync does not fit your needs in this case. You should use
something else, e.g. Unison.
"I set up RSYNC invokation on Ctrl+S in my editor, and I am happy"
------------------------------------------------------------------
Congrats, you're a geek. But wait... geeks are typically seen to be working
at home too. Is RSYNC fast enough when your connect to your office via
unstable internet connection with non-zero ping? I don't think so (or -
I envy your internet quality).
Programmers
-----------
Dmitry Koterov
Author & maintainer of the RealSync Perl script and "notify" tool for win32.
Yuri Nasretdinov
Found, adapted (mainly rewrote) source codes and built "notify" tool
for Linux and MacOS.