Notes on testing, release, and todo items from the Debian paper.
[rsync/rsync.git] / TODO
CommitLineData
46ef7d1d 1-*- indented-text -*-
a0365806 2
259c3e72
MP
3BUGS ---------------------------------------------------------------
4
5There seems to be a bug with hardlinks
6
7 mbp/2 build$ ls -l /tmp/a /tmp/b -i
8 /tmp/a:
9 total 32
10 2568307 -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a1
11 2568307 -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a2
12 2568307 -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a3
13 2568310 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 a4
14 2568310 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 a5
15 2568310 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b1
16 2568310 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b2
17 2568310 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b3
18
19 /tmp/b:
20 total 32
21 2568309 -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a1
22 2568309 -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a2
23 2568309 -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a3
24 2568311 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 a4
25 2568311 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 a5
26 2568311 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b1
27 2568311 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b2
28 2568311 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b3
29 mbp/2 build$ rm -r /tmp/b && ./rsync -avH /tmp/a/ /tmp/b
30 building file list ... done
31 created directory /tmp/b
32 ./
33 a1
34 a4
35 a2 => a1
36 a3 => a2
37 wrote 350 bytes read 52 bytes 804.00 bytes/sec
38 total size is 232 speedup is 0.58
39 mbp/2 build$ rm -r /tmp/b
40 mbp/2 build$ ls -l /tmp/b
41 ls: /tmp/b: No such file or directory
42 mbp/2 build$ rm -r /tmp/b && ./rsync -avH /tmp/a/ /tmp/b
43 rm: cannot remove `/tmp/b': No such file or directory
44 mbp/2 build$ rm -f -r /tmp/b && ./rsync -avH /tmp/a/ /tmp/b
45 building file list ... done
46 created directory /tmp/b
47 ./
48 a1
49 a4
50 a2 => a1
51 a3 => a2
52 wrote 350 bytes read 52 bytes 804.00 bytes/sec
53 total size is 232 speedup is 0.58
54 mbp/2 build$ ls -l /tmp/b
55 total 32
56 -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a1
57 -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a2
58 -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a3
59 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 a4
60 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 a5
61 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b1
62 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b2
63 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b3
64 mbp/2 build$ ls -l /tmp/a
65 total 32
66 -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a1
67 -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a2
68 -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a3
69 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 a4
70 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 a5
71 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b1
72 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b2
73 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b3
46ef7d1d 74
33d213bb 75
e4724e5c
MP
76Progress indicator can produce corrupt output when transferring directories:
77
78 main/binary-arm/
79 main/binary-arm/admin/
80 main/binary-arm/base/
81 main/binary-arm/comm/8.56kB/s 0:00:52
82 main/binary-arm/devel/
83 main/binary-arm/doc/
84 main/binary-arm/editors/
85 main/binary-arm/electronics/s 0:00:53
86 main/binary-arm/games/
87 main/binary-arm/graphics/
88 main/binary-arm/hamradio/
89 main/binary-arm/interpreters/
90 main/binary-arm/libs/6.61kB/s 0:00:54
91 main/binary-arm/mail/
92 main/binary-arm/math/
93 main/binary-arm/misc/
94
95lchmod
96
97 I don't think we handle this properly on systems that don't have the
98 call.
99
100
3d90ec14
MP
101DAEMON --------------------------------------------------------------
102
103server-imposed bandwidth limits
104
105rsyncd over ssh
106
107 There are already some patches to do this.
108
109 BitKeeper uses a server whose login shell is set to bkd. That's
110 probably a reasonable approach.
111
112
113FEATURES ------------------------------------------------------------
33d213bb 114
33d213bb 115
642a979a
MP
116--dry-run is insufficiently dry
117
118 Mark Santcroos points out that -n fails to list files which have
119 only metadata changes, though it probably should.
120
121 There may be a Debian bug about this as well.
122
123
a2d2e5c0
MP
124use chroot
125
126 If the platform doesn't support it, then don't even try.
127
128 If running as non-root, then don't fail, just give a warning.
129 (There was a thread about this a while ago?)
130
131 http://lists.samba.org/pipermail/rsync/2001-August/thread.html
132 http://lists.samba.org/pipermail/rsync/2001-September/thread.html
133
642a979a 134
a2d2e5c0
MP
135--files-from
136
137 Avoids traversal. Better option than a pile of --include statements
138 for people who want to generate the file list using a find(1)
139 command or a script.
140
642a979a 141
595f2d4d
MP
142supplementary groups
143
144 Perhaps allow supplementary groups to be specified in rsyncd.conf;
145 then make the first one the primary gid and all the rest be
146 supplementary gids.
147
148
8f4455f2
MP
149File list structure in memory
150
151 Rather than one big array, perhaps have a tree in memory mirroring
152 the directory tree.
153
154 This might make sorting much faster! (I'm not sure it's a big CPU
155 problem, mind you.)
156
157 It might also reduce memory use in storing repeated directory names
158 -- again I'm not sure this is a problem.
0e5a1f83 159
a2d2e5c0
MP
160Performance
161
162 Traverse just one directory at a time. Tridge says it's possible.
a6a3c3df
MP
163
164 At the moment rsync reads the whole file list into memory at the
165 start, which makes us use a lot of memory and also not pipeline
166 network access as much as we could.
167
0e5a1f83
MP
168
169Handling duplicate names
170
b3e6c815 171 We need to be careful of duplicate names getting into the file list.
d2e9d069
MP
172 See clean_flist(). This could happen if multiple arguments include
173 the same file. Bad.
b3e6c815
MP
174
175 I think duplicates are only a problem if they're both flowing
176 through the pipeline at the same time. For example we might have
177 updated the first occurrence after reading the checksums for the
178 second. So possibly we just need to make sure that we don't have
179 both in the pipeline at the same time.
180
181 Possibly if we did one directory at a time that would be sufficient.
182
183 Alternatively we could pre-process the arguments to make sure no
58379559
MP
184 duplicates will ever be inserted. There could be some bad cases
185 when we're collapsing symlinks.
b3e6c815
MP
186
187 We could have a hash table.
188
d2e9d069
MP
189 The root of the problem is that we do not want more than one file
190 list entry referring to the same file. At first glance there are
191 several ways this could happen: symlinks, hardlinks, and repeated
192 names on the command line.
193
194 If names are repeated on the command line, they may be present in
195 different forms, perhaps by traversing directory paths in different
196 ways, traversing paths including symlinks. Also we need to allow
197 for expansion of globs by rsync.
198
199 At the moment, clean_flist() requires having the entire file list in
200 memory. Duplicate names are detected just by a string comparison.
201
202 We don't need to worry about hard links causing duplicates because
203 files are never updated in place. Similarly for symlinks.
204
205 I think even if we're using a different symlink mode we don't need
206 to worry.
207
0e5a1f83
MP
208 Unless we're really clever this will introduce a protocol
209 incompatibility, so we need to be able to accept the old format as
210 well.
211
212
a6a3c3df
MP
213Memory accounting
214
215 At exit, show how much memory was used for the file list, etc.
216
b3e6c815
MP
217 Also we do a wierd exponential-growth allocation in flist.c. I'm
218 not sure this makes sense with modern mallocs. At any rate it will
219 make us allocate a huge amount of memory for large file lists.
220
0e5a1f83 221
a6a3c3df
MP
222Hard-link handling
223
224 At the moment hardlink handling is very expensive, so it's off by
225 default. It does not need to be so.
226
0e5a1f83
MP
227 Since most of the solutions are rather intertwined with the file
228 list it is probably better to fix that first, although fixing
229 hardlinks is possibly simpler.
230
a6a3c3df
MP
231 We can rule out hardlinked directories since they will probably
232 screw us up in all kinds of ways. They simply should not be used.
233
234 At the moment rsync only cares about hardlinks to regular files. I
235 guess you could also use them for sockets, devices and other beasts,
236 but I have not seen them.
237
238 When trying to reproduce hard links, we only need to worry about
239 files that have more than one name (nlinks>1 && !S_ISDIR).
240
241 The basic point of this is to discover alternate names that refer to
242 the same file. All operations, including creating the file and
243 writing modifications to it need only to be done for the first name.
244 For all later names, we just create the link and then leave it
245 alone.
246
247 If hard links are to be preserved:
248
249 Before the generator/receiver fork, the list of files is received
250 from the sender (recv_file_list), and a table for detecting hard
251 links is built.
252
253 The generator looks for hard links within the file list and does
254 not send checksums for them, though it does send other metadata.
255
256 The sender sends the device number and inode with file entries, so
257 that files are uniquely identified.
258
259 The receiver goes through and creates hard links (do_hard_links)
260 after all data has been written, but before directory permissions
261 are set.
262
263 At the moment device and inum are sent as 4-byte integers, which
264 will probably cause problems on large filesystems. On Linux the
265 kernel uses 64-bit ino_t's internally, and people will soon have
266 filesystems big enough to use them. We ought to follow NFS4 in
267 using 64-bit device and inode identification, perhaps with a
268 protocol version bump.
269
270 Once we've seen all the names for a particular file, we no longer
271 need to think about it and we can deallocate the memory.
272
273 We can also have the case where there are links to a file that are
274 not in the tree being transferred. There's nothing we can do about
275 that. Because we rename the destination into place after writing,
276 any hardlinks to the old file are always going to be orphaned. In
277 fact that is almost necessary because otherwise we'd get really
278 confused if we were generating checksums for one name of a file and
279 modifying another.
280
281 At the moment the code seems to make a whole second copy of the file
282 list, which seems unnecessary.
283
284 We should have a test case that exercises hard links. Since it
285 might be hard to compare ./tls output where the inodes change we
286 might need a little program to check whether several names refer to
287 the same file.
a2d2e5c0
MP
288
289IPv6
290
c33e3e39
MP
291 Implement suggestions from http://www.kame.net/newsletter/19980604/
292 and ftp://ftp.iij.ad.jp/pub/RFC/rfc2553.txt
293
294 If a host has multiple addresses, then listen try to connect to all
295 in order until we get through. (getaddrinfo may return multiple
c10b0bdd 296 addresses.) This is kind of implemented already.
c33e3e39
MP
297
298 Possibly also when starting as a server we may need to listen on
299 multiple passive addresses. This might be a bit harder, because we
300 may need to select on all of them. Hm.
301
a2d2e5c0
MP
302 Define a syntax for IPv6 literal addresses. Since they include
303 colons, they tend to break most naming systems, including ours.
304 Based on the HTTP IPv6 syntax, I think we should use
305
306 rsync://[::1]/foo/bar
307 [::1]::bar
308
309 which should just take a small change to the parser code.
310
b17dd0c4 311
5aafd07b
MP
312Errors
313
314 If we hang or get SIGINT, then explain where we were up to. Perhaps
315 have a static buffer that contains the current function name, or
316 some kind of description of what we were trying to do. This is a
317 little easier on people than needing to run strace/truss.
318
319 "The dungeon collapses! You are killed." Rather than "unexpected
320 eof" give a message that is more detailed if possible and also more
321 helpful.
322
89b0a3d9
MP
323 If we get an error writing to a socket, then we should perhaps
324 continue trying to read to see if an error message comes across
325 explaining why the socket is closed. I'm not sure if this would
326 work, but it would certainly make our messages more helpful.
327
b17dd0c4
MP
328 What happens if a directory is missing -x attributes. Do we lose
329 our load? (Debian #28416) Probably fixed now, but a test case
330 would be good.
331
332
5575de14
MP
333File attributes
334
335 Device major/minor numbers should be at least 32 bits each. See
336 http://lists.samba.org/pipermail/rsync/2001-November/005357.html
337
338 Transfer ACLs. Need to think of a standard representation.
339 Probably better not to even try to convert between NT and POSIX.
340 Possibly can share some code with Samba.
5aafd07b 341
28a69e25
MP
342Empty directories
343
344 With the current common --include '*/' --exclude '*' pattern, people
345 can end up with many empty directories. We might avoid this by
346 lazily creating such directories.
347
c6e27b60 348
28a69e25
MP
349zlib
350
c6e27b60
MP
351 Perhaps don't use our own zlib.
352
353 Advantages:
354
355 - will automatically be up to date with bugfixes in zlib
356
357 - can leave it out for small rsync on e.g. recovery disks
358
359 - can use a shared library
360
361 - avoids people breaking rsync by trying to do this themselves and
362 messing up
363
364 Should we ship zlib for systems that don't have it, or require
365 people to install it separately?
366
367 Apparently this will make us incompatible with versions of rsync
368 that use the patched version of rsync. Probably the simplest way to
369 do this is to just disable gzip (with a warning) when talking to old
370 versions.
371
595f2d4d
MP
372 After we get the @RSYNCD greeting from the server, we know it's
373 version but we have not yet sent the command line, so we could just
374 remove the -z option if the server is too old.
375
376 For ssh invocation it's not so simple, because we actually use the
377 command line to start the remote process. However, we only actually
378 do compression in token.c, and we could therefore once we discover
379 the remote version emit an error if it's too old. I'm not sure if
380 that's a good tradeoff or not.
381
28a69e25 382
92325ada
MP
383proxy authentication
384
385 Allow RSYNC_PROXY to be http://user:pass@proxy.foo:3128/, and do
386 HTTP Basic Proxy-Authentication.
387
388 Multiple schemes are possible, up to and including the insanity that
389 is NTLM, but Basic probably covers most cases.
390
391SOCKS
392
393 Add --with-socks, and then perhaps a command-line option to put them
394 on or off. This might be more reliable than LD_PRELOAD hacks.
395
27741d9f
MP
396Better statistics:
397
398 <Rasmus> mbp: hey, how about an rsync option that just gives you the
399 summary without the list of files? And perhaps gives more
400 information like the number of new files, number of changed,
401 deleted, etc. ?
402 <mbp> Rasmus: nice idea
403 <mbp> there is --stats
404 <mbp> but at the moment it's very tridge-oriented
405 <mbp> rather than user-friendly
406 <mbp> it would be nice to improve it
407 <mbp> that would also work well with --dryrun
408
e53fe9a2
MP
409TDB:
410
411 Rather than storing the file list in memory, store it in a TDB.
412
413 This *might* make memory usage lower while building the file list.
414
415 Hashtable lookup will mean files are not transmitted in order,
416 though... hm.
417
418 This would neatly eliminate one of the major post-fork shared data
419 structures.
420
421
97e1254a
MP
422chmod:
423
424 On 12 Mar 2002, Dave Dykstra <dwd@bell-labs.com> wrote:
425 > If we would add an option to do that functionality, I would vote for one
426 > that was more general which could mask off any set of permission bits and
427 > possibly add any set of bits. Perhaps a chmod-like syntax if it could be
428 > implemented simply.
429
430 I think that would be good too. For example, people uploading files
431 to a web server might like to say
432
433 rsync -avzP --chmod a+rX ./ sourcefrog.net:/home/www/sourcefrog/
434
435 Ideally the patch would implement as many of the gnu chmod semantics
436 as possible. I think the mode parser should be a separate function
437 that passes back something like (mask,set) description to the rest of
438 the program. For bonus points there would be a test case for the
439 parser.
440
36692011
MP
441 (Debian #23628)
442
97e1254a 443
3c1edccb
MP
444--diff
445
446 Allow people to specify the diff command. (Might want to use wdiff,
447 gnudiff, etc.)
448
449 Just diff the temporary file with the destination file, and delete
450 the tmp file rather than moving it into place.
451
452 Interaction with --partial.
453
454 Security interactions with daemon mode?
455
456 (Suggestion from david.e.sewell)
457
458
a628b069
MP
459Incorrect timestamps (Debian #100295)
460
461 A bit hard to believe, but apparently it happens.
6d19c674
MP
462
463
464Check "refuse options works"
465
466 We need a test case for this...
467
468 Was this broken when we changed to popt?
6479c2ed
MP
469
470
bd0ad74f
MP
471PERFORMANCE ----------------------------------------------------------
472
473MD4 file_sum
474
475 If we're doing a local transfer, or using -W, then perhaps don't
476 send the file checksum. If we're doing a local transfer, then
477 calculating MD4 checksums uses 90% of CPU and is unlikely to be
478 useful.
479
480 Indeed for transfers over zlib or ssh we can also rely on the
481 transport to have quite strong protection against corruption.
482
483 Perhaps we should have an option to disable this, analogous to
484 --whole-file, although it would default to disabled. The file
485 checksum takes up a definite space in the protocol -- we can either
486 set it to 0, or perhaps just leave it out.
487
488MD4
489
490 Perhaps borrow an assembler MD4 from someone?
491
492 Make sure we call MD4 with properly-sized blocks whenever possible
493 to avoid copying into the residue region?
494
6479c2ed
MP
495String area code
496
497 Test whether this is actually faster than just using malloc(). If
498 it's not (anymore), throw it out.
a628b069
MP
499
500
501
a2d2e5c0
MP
502PLATFORMS ------------------------------------------------------------
503
504Win32
505
506 Don't detach, because this messes up --srvany.
507
508 http://sources.redhat.com/ml/cygwin/2001-08/msg00234.html
509
510 According to "Effective TCP/IP Programming" (??) close() on a socket
511 has incorrect behaviour on Windows -- it sends a RST packet to the
512 other side, which gives a "connection reset by peer" error. On that
513 platform we should probably do shutdown() instead. However, on Unix
514 we are correct to call close(), because shutdown() discards
515 untransmitted data.
516
0e23e41d
MP
517DEVELOPMENT ----------------------------------------------------------
518
519Splint
520
521 Build rsync with SPLINT to try to find security holes. Add
522 annotations as necessary. Keep track of the number of warnings
523 found initially, and see how many of them are real bugs, or real
524 security bugs. Knowing the percentage of likely hits would be
525 really interesting for other projects.
526
f5a95bb5
MP
527Torture test
528
529 Something that just keeps running rsync continuously over a data set
530 likely to generate problems.
531
532Cross-testing
533
534 Run current rsync versions against significant past releases.
535
43a4dc10
MP
536Memory debugger
537
3a79260d 538 jra recommends Valgrind:
43a4dc10
MP
539
540 http://devel-home.kde.org/~sewardj/
541
25ff30e8
MP
542Release script
543
544 Update spec files
545
546 Build tar file; upload
547
548 Send announcement to mailing list and c.o.l.a.
549
550 Make freshmeat announcement
551
552 Update web site
553
554
555
e9c4c301
MP
556TESTING --------------------------------------------------------------
557
558Cross-test versions
559
560 Part of the regression suite should be making sure that we don't
561 break backwards compatibility: old clients vs new servers and so
25ff30e8
MP
562 on. Ideally we would test both up and down from the current release
563 to all old versions.
564
565 We might need to omit broken old versions, or versions in which
566 particular functionality is broken
e9c4c301
MP
567
568 It might be sufficient to test downloads from well-known public
569 rsync servers running different versions of rsync. This will give
570 some testing and also be the most common case for having different
571 versions and not being able to upgrade.
572
25ff30e8
MP
573
574Test on kernel source
575
576 Download all versions of kernel; unpack, sync between them. Also
577 sync between uncompressed tarballs. Compare directories after
578 transfer.
579
580 Use local mode; ssh; daemon; --whole-file and --no-whole-file.
581
582 Use awk to pull out the 'speedup' number for each transfer. Make
583 sure it is >= x.
584
585
e9c4c301
MP
586Test large files
587
588 Sparse and non-sparse
589
590Mutator program
591
592 Insert bytes, delete bytes, swap blocks, ...
593
594configure option to enable dangerous tests
595
596If tests are skipped, say why.
597
b73b51a9
MP
598Test daemon feature to disallow particular options.
599
599dc93c
MP
600Pipe program that makes slow/jerky connections.
601
76533c52
MP
602Versions of read() and write() that corrupt the stream, or abruptly fail
603
6479c2ed
MP
604Separate makefile target to run rough tests -- or perhaps just run
605them every time?
606
e9c4c301 607
7c583c73
MP
608DOCUMENTATION --------------------------------------------------------
609
610Update README
611
b73b51a9
MP
612Keep list of open issues and todos on the web site
613
614Update web site from CVS
615
5af50297
MP
616
617Perhaps redo manual as SGML
618
619 The man page is getting rather large, and there is more information
620 that ought to be added.
621
622 TexInfo source is probably a dying format.
623
624 Linuxdoc looks like the most likely contender. I know DocBook is
625 favoured by some people, but it's so bloody verbose, even with emacs
626 support.
627
628
a2d2e5c0
MP
629BUILD FARM -----------------------------------------------------------
630
631Add machines
632
633 AMDAHL UTS (Dave Dykstra)
634
635 Cygwin (on different versions of Win32?)
636
637 HP-UX variants (via HP?)
33d213bb 638
5aafd07b
MP
639 SCO
640
46ef7d1d 641
62b68c80 642LOGGING --------------------------------------------------------------
a2d2e5c0 643
62b68c80
MP
644 Perhaps flush stdout after each filename, so that people trying to
645 monitor progress in a log file can do so more easily. See
646 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=48108
a2d2e5c0 647
62b68c80
MP
648 At the connections that just get a list of modules are not logged,
649 but they should be.
650
651 If a child of the rsync daemon dies with a signal, we should notice
652 that when we reap it and log a message.
653
654 Keep stderr and stdout properly separated (Debian #23626)
655
656 Use a separate function for reporting errors; prefix it with
657 "rsync:" or "rsync(remote)", or perhaps even "rsync(local
658 generator): ".
a2d2e5c0 659
50f2f002
MP
660verbose output
661
662 Indicate whether files are new, updated, or deleted
663
d834adc1
MP
664 At end of transfer, show how many files were or were not transferred
665 correctly.
666
62b68c80
MP
667-vv
668
669 Explain *why* every file is transferred or not (e.g. "local mtime
670 123123 newer than 1283198")
671
672
8ff9d697
MP
673debugging of daemon
674
675 Add an rsyncd.conf parameter to turn on debugging on the server.
676
677
62b68c80
MP
678
679NICE -----------------------------------------------------------------
680
681--no-detach and --no-fork options
682
683 Very useful for debugging. Also good when running under a
684 daemon-monitoring process that tries to restart the service when the
685 parent exits.
686
687hang/timeout friendliness
3d90ec14 688
a2d2e5c0
MP
689internationalization
690
691 Change to using gettext(). Probably need to ship this for platforms
692 that don't have it.
693
694 Solicit translations.
695
3d90ec14
MP
696 Does anyone care? Before we bother modifying the code, we ought to
697 get the manual translated first, because that's possibly more useful
698 and at any rate demonstrates desire.
699
a2d2e5c0 700
46ef7d1d
MP
701rsyncsh
702
703 Write a small emulation of interactive ftp as a Pythonn program
704 that calls rsync. Commands such as "cd", "ls", "ls *.c" etc map
705 fairly directly into rsync commands: it just needs to remember the
706 current host, directory and so on. We can probably even do
707 completion of remote filenames.
25ff30e8
MP
708
709
710RELATED PROJECTS -----------------------------------------------------
711
712http://rsync.samba.org/rsync-and-debian/
713
714rsyncable gzip patch
715
716 Exhaustive, tortuous testing
717
718 Cleanups?
719
720rsyncsplit as alternative to real integration with gzip?
721
722reverse rsync over HTTP Range
723
724 Goswin Brederlow suggested this on Debian; I think tridge and I
725 talked about it previous in relation to rproxy.