Overclock.net banner
1 - 20 of 258 Posts

· Registered
Joined
·
1,443 Posts
Discussion Starter · #1 ·
Hi guys,

This tool has been created to replace the built in Steam backup and restore utility. Generally speaking it will compress games faster and/or smaller (depending on the settings) than the default backup feature in Steam. This tool also tends to be a lot more stable and it doesn't break the file into segments unlike the utility built into steam.

Main Features:
  • Includes a command line interface so you can setup scheduled backups.
  • After the initial Backup you have the ability to only backup games that have been updated since the previous update.
  • Choose what games to backup and restore.
  • Choose to restore to an alternative steam library.*
  • Automatically installs games after restore.*
  • Fully multithreaded and optimized for up to 8 core CPUs.
  • Choose the compression level and how many thread to use.
  • Will only use "spare" CPU time.
  • Can automatically find steam folder.
  • Checks online for new updates.
  • High compression ratio due to 7z's excellent LZMA and LZMA2 compression algorithms.
* If the game uses steams new cache format and this cache has the correct information available.

Download Here:
Steam Backup Tool
Source

Change List

This program requires .NET Framework 4.0.

Screen Shots:
Preview of version 1.6.1.1
 

· Registered
Joined
·
1,443 Posts
Discussion Starter · #4 ·
Quote:
Originally Posted by Stealth2o;12788668
This looks good. Thanks! +
Quote:
Originally Posted by Outcasst;12788675
This is awesome, +1
Thanks, I was surprised that i couldn't find anything that does this in the whole interwebs.

(implying the the internet is something you go into)
 

· Registered
Joined
·
1,443 Posts
Discussion Starter · #20 ·
Holey Moley!

May i ask in what way is it multithreaded? (it backs up two archives at a time?)

Also does anybody know what file does steam uses to store information about whether or not certain game are installed? it would be handy to back that up to, I hate having to double click to 'download' every game.
 

· Registered
Joined
·
1,443 Posts
Discussion Starter · #27 ·
I'm running it now
smile.gif


Is it meant to be running just 1 or 2 cmd windows? I only just started the backup process but it seems to only be doing the steamapps.7z at the moment. this look pretty fancy pants though
tongue.gif


Also i am happy to host the prog for you, I have a du-z.com domain doing nothing other than hosting a test server for work.
 

· Registered
Joined
·
1,443 Posts
Discussion Starter · #29 ·
Quote:
Originally Posted by FiX;12835708
Just remembered that steam install directory has to be the steamapps folder. and hosting will be sorted out when iv got a stable release
tongue.gif
Ahh ok that's why that backup was only 4GB in size
tongue.gif
.

it would probably be best to backup those icons and such if it helps with not having to 'download' the game.
 

· Registered
Joined
·
1,443 Posts
Discussion Starter · #35 ·
I came across a problem, basically it only backed up 1/4 of the games in the common folder, It might be because steam was running. I am trying it again now with steam not running. will report back in 10 or so hours time
tongue.gif
.
 

· Registered
Joined
·
1,443 Posts
Discussion Starter · #37 ·
Quote:
Originally Posted by xxbassplayerxx;12856739
How well threaded is this?

For instance, will I benefit from having a 970 vs. a 920?
its only partially multi threaded. at first it will use 4 cores then once it has done the the .gcf files it only uses two cores. so it can be optimized. In roughly a hour it did ~35GB
 

· Registered
Joined
·
1,443 Posts
Discussion Starter · #43 ·
well here is my idea of a way to multitasking. I know its hard to share arrays between thread when using VB so presuming its the same for C# but i have used a similar technique in VB

1. get all of the Directories that need to be backed up and add them to a Public Shared Array.
2. Start x number of threads (x = a user selected number)
3. each thread reads the last item in the array, deletes it then starts backing it up (it might be best to have a ~1ms delay between starting each thread just in case it tries to read the same array index)
4. keep doing this until the array is empty.
 

· Registered
Joined
·
1,443 Posts
Discussion Starter · #45 ·
Quote:
Originally Posted by FiX;12867556
well, theres nothing i can do about the steamapps folder as its only 1 archive. but i can get all the common folders on different threads running concurrently
I might make some pseudo code to explain my idea. give me about 10 minutes.
smile.gif
 

· Registered
Joined
·
1,443 Posts
Discussion Starter · #47 ·
this is in rough VB. it took longer than 10 minutes but meh ;p

Code:

Code:
Public Class Form1

    Public Shared backupDir() As String
    Public Shared i As Integer = 0

    Public Sub btnBackup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBackup.Click
        Dim sDir As Integer = tbxSteamDir.text
        Dim bDir As Integer = tbxBackupDir.text
        Dim numThreads As Integer = tbxNumThreads.text

        ' add steam apps to array
        backupDir(i) = Application.StartupPath & ".7za.exe a -t7z " & bDir & "\steamapps.7z " & sDir & "\steamapps\* -mx9 -xr!common"
        i++

        ' add individual common folders to array
        For Each cmnFolder As String In IO.Directory.GetDirectories(sDir & "\steamapps\common")
            ' Get folder name
            Dim folder As String = ""
            For c = Len(cmnFolder) To 1 Step -1
                If Mid(cmnFolder, c, 1) = "\" Then
                    Exit For
                Else
                    folder = Mid(cmnFolder, c, 1) & folder
                End If
            Next c
            ' Add to array
            backupDir(i) = Application.StartupPath & ".7za.exe a -t7z " & cmnFolder & "\common\" & folder & ".7z " & cmnFolder & " -mx9"
            i++
        Next

        'Start Threads
        Dim l As Integer
        While l <= numThreads
            ' start threads in here
        End While

    End Sub

    Public Class runThread
        ' do what you normally do in each thread but use the last index of backupDir(i) as the command deleting it as it gets used.
    End Class

End Class
 
1 - 20 of 258 Posts
This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.
Top