Login Form






Lost Password?
No account yet? Register
Freelancer Jobs arrow Freelancer Jobs - Archive 2007
JobId: #1400221

Windows Backup and Restore Application

Categories: Microsoft Windows,C++ / C,Requirements,Operating Systems / Platforms,MS Exchange,C#,Software Related (Includes Websites)
Posted By: onnigk  (0 ratings)
Source: Rent-a-coder
Job viewed: 464 times
Bids Placed: 5
Start Date: 2010-04-30 08:43:59
End Date: 2010-05-13 19:16:25
Time Remaining:
Deadline: 30 days.
Current Phase: Bidding open
Max Accepted Bid: 2,000.00 (USD)
Project Type:
Bid Type: Open Auction
Brief Summary:

The backup software will use Microsoft Volume Shadow Copy Service (VSS) to backup files and database files including Microsoft Exchange version 2000 and up.

This component should be designed to work with following versions of windows: 
XP, Vista, Windows 7, Server 2003 and Server 2008 in 32 bit and 64 bit versions for all. The application at runtime should automatically detect and use the correct target for VSS. 


There should be two applications, a user interface (UI) as a Windows Presentation Foundation (WPF) application, and a component dll (referred to Worker from now on) that does the work of the backup/restore based on a set of instructions from the UI.  The UI would also initially query the Worker and present options to a user based on what may be available to backup on the system that the application is running on.



Requirements Interview Answers:
To help you bid more accurately, the buyer was interviewed about the requirements for this bid request. Below are their answers. Untitled Page
Bid request Type: What kind of work do you need done?
Software related (Includes desktop applications and internet websites)
Bid request Parts: What do you want the worker to do on this bid request?
Requirements: The worker will analyze the problem and propose a software-based solution to the problem.
Programming: The worker will take the requirements and translate them into the language of the computer (and test it).
User installation: The installer will move the software from the place it was created (which is called the development or QC environment) to where you will use it (which is called the production environment). The installer then tests the software to make sure that the installation was done properly and completely.
Req. Doc. Type: What kind of documentation do you want for this bid request?
Formal documentation - After talking back and forth, the worker creates a formal document and/or prototype, as follows:
  • Prototype: The analyst will create a non-working mockup of all pages/screens in the final software. Creating a prototype makes it easier for the user to visualize the final software, and reduces misunderstandings.
Program Type: What kind of software should the worker create (and/or install)?
  • A desktop or server program: This software runs on a user's own PC/workstation, or on a server.
Desktop / server program info
Size of application: How many screens/forms need to be created/edited in this application?
Approximately 3.
Programming Language: What programming language(s) do you want your application written in?
I do know the language(s).
Languages(s):
  • C#
  • C++ / C
Operating system(s) What operating systems(s) do you want your application to work on?
I do know the operating system(s):
  • Microsoft Windows -- version(s): XP, Vista, 7, 2003, 2008
  • Database: Will this bid request include a database?
    No, it does not include a database.
    Installation Program: Does the worker need to create an installation program?
    No. The worker needs to only give me instructions on how to install it.
    Legal: 1) I require complete and fully-functional working program(s) in executable form as well as complete source code of all work done (so that I may modify it in the future).
    2) Deliverables must be in ready-to-run condition as follows (depending on the nature of the deliverables):
    2a) If there are any server-side deliverables (intended to only exist in one place in the Buyer's environment) then they must be installed by the Worker in ready-to-run condition (unless specified elsewhere by the Buyer).
    2b) All other software (including but not limited to any desktop software or software the buyer intends to distribute) must include a software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request (unless specified elsewhere by the Buyer).
    3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased.
    3b) No part of the deliverable may contain any copyright restricted 3rd party components (including GPL, GNU, Copyleft, etc.) unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the worker's Worker Legal Agreement.
    Other Requirements:
    Must be written in C# (.NET version 3.5 or 4.0) with exception of parts that may require C++.  If C++ is required, it must be managed C++.
    The finished work must be provided as one or more Visual Studio Solutions in VS 2008 or VS 2010.
    I must be able to build Release and Debug versions and be able to run debug version in Visual Studio for testing.


    It will be acceptable to use AlphaVSS as part of the solution. See http://alphavss.codeplex.com/ 
    If you do use AlphaVSS, you will be responsible for fixing bugs in AlphaVSS that affect the operational requirements as stated below.  You will not responsible for bugs that may exist for parts of AlphaVSS that this application does not need/use.


    The Worker should be designed to work within a Windows service or within a client application.  The Worker and UI should communicate using Windows Communications Foundation (WCF), probably using .NET Remoting, but that decision can be made at a later time.  In order for me to make sure that you read all of the requirements, you must have the word “pineapple” somewhere in your bid for me to consider your bid. The UI should be able to manage a Worker by connecting to a machine that has a Worker running.  For now, authentication is not necessary.   All request needed to populate  the UI should go to the Worker and not directly to the local system since the local system would not have the correct information for a Worker on a remote system.
     
    If you are not familiar with VSS, I would highly recommend you read through the documentation provided by Microsoft before you make a bid.

    The UI should be able to present appropriately at least the following types of special backup situations:
    Microsoft Exchange 2000 and up
    Windows System State (registry, etc.)
    Active Directory

    For backup:
    1. A button on the UI should request from the Worker all available writers from VSS on the system that the Worker is on. In addition, get a list of all local volumes to the Worker.
    2. Each application that has a writer should be presented in a TreeView that can be selected (or partially selected, for example: we should be able to select only one complete set of multiple exchange data stores, but not part of a data store) for backup. Also a file selection for the volumes should be displayed to backup files that are not VSS aware (no VSS writer).
    3. The file list should not be loaded all at once, the user should be presented with a list of drives and as the user expands the tree for that volume, files and folders should be requested from the Worker and presented to the user.  This list should be cached on the UI side so that redundant requests are not made to the Worker.  The cache should expire based on time (maybe around 1 minute).
    4. Selections should work similar to the selection tree in ntbackup.
    5. The UI should have a Browse button to select a target path where the backups will be written to (this could be a local volume or a UNC path), again, the target path browse function should go through the Worker and not be directly from the UI.  
    6. The UI will have options to select backup type (Full, Differential or Incremental) for writers that support those options.
    7. The UI will have a start backup button that will send all the information required to the Worker to run the backup job, and show the progress of the backup. Typically progress is done by the UI registering to an event published within the component dll.  I do not want it that way.  I want the UI to poll the Worker on a periodic basis (once every second).  If you need to use events within the Worker itself, that is acceptable. 
    8. The progress should contain at least the following information: Filename, file x of y files, file size, current file progress (either in bytes or percent), total bytes of all files, total progress (either bytes or percent).
    9. The backup copies should preserve all NTFS ACLs and attributes (probably within the manifest for the file, see item below on manifest, it may be possible that the target volume may not be NTFS), they should also have all Alternate Data Streams (ADS) if any exist. Alternate Data Streams should be stored as normal files with modified files names that make it clear that they are part of another file. We would need to make sure we have a naming system that would not potentially have a collision with other file names.
    10. Very long file paths should also be supported.  Windows has a limit of 260 characters, while NTFS does not.  It is easy to exceed the 260 char limit on a file server with a share where the share has a short path to the client system, but ends up exceeding 260 char when on the server.
    11. Since most of the special backup situations have multiple files that are part of a set that get backed up, the target location should also contain some sort of manifest file with a list of the files that are part of the set. We would probably need to have the complete location of the file in addition to the name, file size, last modified date, a file hash (for validation) and Alternate Data Stream information.  This would be important for the restore process. This manifest should probably be an xml file or a flat text file but I’m open to other suggestions.



    For Restore:
    1. Browse and select a source path/file (through the Worker)
    2. Depending on the type of file set that was selected as the source, there may or may not be an option given for a target path.  For example, Active Directory requires the system be Directory Services Recovery mode and you would then use VSS to do the restore. System State requires steps as shown here: http://msdn.microsoft.com/en-us/library/aa381498(VS.85).aspx
    3. Standard files should refer to the manifest to make and restore appropriate ACLs and attributes.
    4. Button Restore – runs the restore process and shows the progress using the same constraints on events as backup


    While I gave examples and a link above on what different situations are required, by no means is that a comprehensive list.  You need to make sure that you have read through the VSS documentation and understand the correct way to backup and restore the types that I have listed and provide the correct methods and document manual procedures that may be required.

    Backup and Restore UI should each be written so that it would be very simple to separate them into two independent applications if required.  

    The UI should be simple and should not have any changes from the default Visual Studio Styles/Colors/etc.  Don’t change background and foreground colors or styles to try and make it look fancy.  

    All code that you write must be very well commented. 

    You must provide clear documentation of the required steps to completely build the application.  For example, AlphaVSS requires strong names and signing to work correctly. I would need the complete steps in creating/obtaining our own private/public key and applying it to the assemblies that need it. 

    It is possible that I have neglected to mention important requirements, I will rely on you to make sure that this application works as intended (to reliably back up and restore files and special type of databases as specified above) even if I missed to specify something important. 

    If something is not clear, please ask before bidding.
     

    Categories:
    (Note: Like everything else on this page, these categories are part of the original contract for this bid request.)
    Microsoft Windows, Languages, C++ / C, Requirements, Operating systems / platforms, MS Exchange, C#, Other (Technology), Software related (includes websites)


    Expert Guarantee Required:

         It is crucial to the buyer that this entire bid request be completed (100%) by the deadline of 30 days. They only want expert workers who will commit themselves to this deadline to bid. If you are not an expert or unable to commit completely to the deadline, then DO NOT BID on this bid request.

         If you are an expert and can commit, the buyer would like you to demonstrate this by making an
    Expert Guarantee of at least 10% of your bid. (This would not need to be made now...but only if and when you are are selected as the winning bidder). If you complete the job (100% by the deadline), then your deposit would be refunded to you. If you do not, then you would forfeit the deposit and it would go to cover the buyer's cancellation charge and the remainder donated to a non-profit charity.

         Please note that depending on how you choose to make the deposit, there may be a small, non-refundable processing fee. This fee can be reduced or eliminated by choosing a less expensive method of payment. Or, you may wish to ask the buyer to cover the cost of the fee for you. You can do this in a number of ways such as: increasing the price of your bid, asking the buyer to post a 2nd bid request to cover it (contingent on completion of the bid request), or by getting the buyer to promise to pay the fee to you as a bonus (upon completion of the bid request). If you choose the bonus route, just remember that due to credit card/PayPal rules, Rent A Coder CANNOT force a buyer to pay a bonus involuntarily...even when promised on-site. So don't choose this option, unless you trust the buyer, or are willing to take a small risk.

         This is just a very brief overview of how the Expert Guarantee works and there are many more details that you need to understand fully before you bid on this bid request. DO NOT BID on this bid request until you've read and fully understand everything about the Expert Guarantee (including reading the contract and the FAQs).