home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
kermit.columbia.edu
/
kermit.columbia.edu.tar
/
kermit.columbia.edu
/
scripts
/
ckermit
/
ftpsyncup
< prev
next >
Wrap
Text File
|
2003-02-23
|
3KB
|
63 lines
#!/usr/local/bin/kermit
;
; f t p s y n c u p
;
; Synchronizes a server directory tree from a local one.
; . Local files that don't exist on the server are uploaded.
; . Local files that exist on the server are uploaded only if newer.
; . Local file timestamps are not preserved (FTP doesn't allow that).
; . Server file permissions are not preserved
; . Ditto for file owner, group, ACLs, etc.
; . Works across platforms via automatic text/binary mode switching.
; . Works quietly but keeps a log of what it did.
;
; Directories are created on the server automatically as we descend through
; the local tree.
;
; Local file permissions are preserved on the server if the server and
; client are both Unix-based and the server permits SITE CHMOD.
;
; Server files that don't exist on the client are NOT deleted.
; It would be possible to script this, but ugly. If this script was to
; handle only a single flat directory and not a directory tree, then it
; would be easy to delete extraneous files from the server (get file list
; with "mget /namelist:xxx *" then read filenames from xxx, "if exist"
; each one, ldelete it).
;
; Requires: C-Kermit 80 or later or K95 2.0 or later
;
; F. da Cruz, Columbia University, 24 Feb 2003
; Parameters - Change as needed (or turn them into arguments)
.host = kermit.columbia.edu ; Change to desired host
.rdirectory = kermit/g ; Change to desired host directory
.ldirectory = ~/g ; Change to desired local directory
.logfile := \v(home)ftpsync.log ; Change to desired logfile name
; End of parameter defintions.
set transaction-log brief ; Choose brief transaction-log format
set exit warning off ; No "OK to exit?" prompts
set quiet on ; Suppress progress messages
lcd \m(ldirectory) ; CD to desired local directory
if fail exit 1 "LCD failed - \m(ldirectory)" ; Make sure we did
ftp open \m(host) /anonymous ; Open and check anonymous FTP connection
if fail exit 1 Login failed
if not \v(ftp_loggedin) exit 1 "Anonymous Login failed"
log transactions \m(logfile) ; Start log
ftp cd \m(rdirectory) ; CD to desired server directory
if fail exit 1 "FTP CD failed - \m(rdirectory)"
ftp mput /recursive /update * ; Put all local files in update mode
if fail exit 1 "Mput failed" ; Check for errors
bye ; Disconnect from server
close transaction-log ; Close log
cat \m(logfile) ; Display log
exit 0