Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top


Is there any free / opensource tool that lets you to connect to FTP server and then download files and ZIP to archive them? I like to have codebase backups of multiple FTP sites to different ZIP files and save them for future if required.

App that can run on windows is preferred and should be able to schedule this.


share|improve this question
up vote 1 down vote accepted

Cobian can use FTP as a source or destination, support scheduling, multiple destinations for backups, compression, full/incremental/differential backups, and timestamped folders for daily backups, keeping multiple days worth of backups.

share|improve this answer

wget? See

This will retrieve a directory tree that you can then zip using any of the usual command line zippers. You'd just put it all in a batch files and run it from the Task Scheduler.


share|improve this answer

Check out Super Flexible File Synchronizer. We do something similar using that tool. It isn't FOSS, but pretty cheap and has a lot of good features.

share|improve this answer

I'd have though some simple scripting (batch file) would do the job. Either ftp or wget, and no doubt a bunch of others, can download the files. There are also a number of command line archiving programs. It can be run from the task scheduler.

I have similar requirement and have a script on the server do most of the work. By gathering and compressing them on the server there's less to download. A client side script, utilising wget, downloads the resulting archives, which already have filenames that include the date and time. So, it's a bash script run via cron on the Linux server and a batch file run via Task Scheduler on a Windows client.

share|improve this answer

Do you have only FTP access to the server?

If so, I suggest NcFTP and 7z (7-zip).

If you can manage a logon to the server (like its yours and this is backup activity),

  1. logon to the server through SSH,
  2. fire a script to archive and compress the directories of interest,
  3. and, then just SCP them wherever.
    (but, please use public authentication with ssh and scp)
share|improve this answer

I had a similar requirement for my web server and thought about FTP but didn't like the unsecure connections... So instead I created a backup script, added it to the Windows Task Scheduler service, and then configured it to run nightly.

The script performs a backup using NTBackup for each folder I need backed up. All backup files (.bkf) are saved into a single backup folder.

Call BackupInstance(folderPath, folderName)

Function BackupInstance(fstrFolderPath, fstrFolderName)
    Dim strJobName : strJobName = "Backup_" & fstrFolderName

    Dim strMonth : strMonth = GetMonth(Month(Date))
    Dim strDay : strDay = GetDay(Day(Date))
    Dim strYear : strYear = Year(Date)

    Dim strTimeStamp : strTimeStamp = strMonth & strDay & strYear & "-" & Replace(FormatDateTime(now,vbShortTime),":","")

    Dim strBackupFileName : strBackupFileName = fstrFolderName & "_" & strTimeStamp & ".bkf"
    Dim strBackupOptions : strBackupOptions = "/SNAP:off /M normal /L:f /V:yes /D " & chr(34) & "Backup of " & fstrFolderName & chr(34)
    Dim strSyntax : strSyntax = "presp1-ntbackup.exe backup " & _
                chr(34) & fstrFolderPath & chr(34) & _
                " /J " & strJobName & _
                " /F " & chr(34) & BackupFolder & "\" & strBackupFileName & chr(34) & _
                " " & strBackupOptions

    if blnDebug = True then wscript.echo "Backing up " & strBackupFileName "cmd /c " & strSyntax, 0, True
end function

Each time the backup script runs it checks for x-number of days old backup files and then deletes them, keeping the backup folder from getting too full.

Call ArchiveFiles(BackupFolder)

Sub ArchiveFiles(strBackupFolder)
    On Error Resume Next
    Dim objFolder : Set objFolder = objFSO.GetFolder(strBackupFolder)
    Dim colFiles : Set colFiles = objFolder.Files

    if blnDebug = True then wscript.echo "Found " & colfiles.count & " blkf file(s) in " & strBackupFolder

    Dim objFile
    For Each objFile in colFiles
    	if lcase(Right(,3)) <> "bkf" then
    		if blnDebug = True then Wscript.Echo "Skipping " & & " because it's not a backup file"
    	elseif DateDiff("d", objFile.DateLastModified, Now) => intNumberOfDays then
    		if blnDebug = True then Wscript.Echo "Removing " & objFile.Name & "  " & objFile.DateLastModified & " (" & DateDiff("d", objFile.DateLastModified, Now) & " days old)"
    	elseif DateDiff("d", objFile.DateLastModified, Now) < intNumberOfDays then
    		if blnDebug = True then wscript.echo "Skipping " & objFile.Name & " because it's only " & DateDiff("d", objFile.DateLastModified, Now) & " days old)"
    		if blnDebug = True then wscript.echo "Unable to resolve last modified date for " &
    	end if
end sub

To offload the backup files I use Windows Live Sync as a service to synchronize the Webserver backup folder my home computer. This ensures that my backup files always exist on both the Webserver and my home computer. From my home computer I use Mozy online backup to backup both the web server files and my personal files.

Been using this for some time without any problems. If you need more info or would like a copy of the script in it's entirety just let me know...

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.