# File backups for Photoshop

I've been working with Photoshop for a long time, and every once in a while I work on a file, sometimes in a rush, sometimes just being lazy.. what happens is that I end up ruining it.

I save, go on with my day, and then I open it later only to realize/remember that a previous version was better, only if I would of saved it in multiple versions as I usually do.. but sometimes it happens and I DON'T.

Do you know of a plugin or an add-on or something that does this, is there some option somewhere in Photoshop that I don't know about ? I saw some new features about Recovery Information Under Preferences > File Handling but I find no use for it.. I want something that prevents me from overwriting, or rather it doesn't even prevent me, it just saves a different file with an incremental number at the end.

(What I need is something that won't let me overwrite a file when saving, but rather create another file with the exact same name and a number at the end. Something like Save as but not Saves As and not me writing a different file name every time. I wan't it as part of my normal routine, to be safe and never sorry that I lost something I spen hours working on and ruined it in a few minutes, then saved the turd and wonder at it later.)

For example, when I use the default Ctrl + S (Save) multiple times, I want it to automatically do:

• ThisPsdFile-1.psd
• ThisPsdFile-2.psd
• ThisPsdFile-3.psd

[Please restrain from comments like: "you are too lazy, blabla.." it just happens sometimes, and I want this error solved forever... something I install once and boom, that's about it.

• I believe this is not a 100% duplicate but you may want to have a look at this question: graphicdesign.stackexchange.com/questions/13161/… – Const Mar 27 '13 at 16:57
• What you need is some form of version control system. Alas, most systems aren'd designed to handle files like PSDs. – DA01 Mar 27 '13 at 17:27
• actually if you are running a mac you can create a simple bash script in the terminal. I haven't tested cron jobs in mac but if someone hasn't posted a solution I will try to find time to write a script. – DᴀʀᴛʜVᴀᴅᴇʀ Mar 27 '13 at 18:39
• I know of nothing which does what you want. Adobe tried it with Version Cue.. and that failed miserably. – Scott Mar 27 '13 at 20:32
• @flavius: I presume you are using windows (ctrl+s shortcut)? – horatio Mar 28 '13 at 16:58

Ok. I should have known that I'd never be able to leave as it was. New stuff!

I ended up making a repo in github because there's still room for improvements.

You can download the file in here: Auto Save PSD in github »

It's now slightly easier to install, and the additional .psd file is saved only when you wish to do so.

# Install

• Download the files: Auto Save PSD.jsx and Auto Save PSD.atn Auto Save PSD.jsx: Put this file in {Photoshop_root}\Presets\Scripts\Auto Save PSD.jsx

• Next time you open photoshop you will find the script in: File > Scripts > Auto Save PSD. If photoshop is already running, restart it.
• Auto Save PSD.atn: Double click this file so that it is added to photoshop.

• You can make sure that it was added by going to: Window > Actions and making sure that you an find Auto Save PSD folder at the bottom of your Actions panel.
• Add a shortcut in photoshop:

• Edit > Keyboard shortcuts... ( Mac: Alt + Shift + Cmd + K. Windows: Alt + Shift + Ctrl + K )
• Choose Shortcuts for: [Applications menus]
• File > Scripts > Auto Save PSD. ( After opening File you need to scroll down quite a bit to find Scripts )
• Install complete

# Usage:

Each time you feel like saving additional file, press the shortcut you gave to the script.

A new file will be saved in a folder next to the original one.

# In such case where the github page is down

The action required is easy to set up:

• Open a new document
• Save it once as .psd
• Make changes in it
• Make a new folder for Actions. Name it: Auto Save PSD
• Start recording new action inside that folder. Name it save
• Press hotkey for save. Mac: Cmd + S. Windows: Ctrl + S.
• Stop recording action.

Copy this and make it into a file Auto Save PSD.jsx:

// Auto Save PSD.jsx 1.3.
// This file was modified out of "Save Extra JPEG.jsx".
// Modifications by Joonas Pääkkö
// https://github.com/joonaspaakko

/*

<javascriptresource>
<name>$$/JavaScripts/AutoSavePSD/Menu=Auto Save PSD</name> <category>Auto Save</category> <enableinfo>true</enableinfo> <eventid>64feff0a-8271-436f-8c59-d2105497d902</eventid> </javascriptresource> */ // enable double clicking from the Macintosh Finder or the Windows Explorer #target photoshop // on localized builds we pull the$$$/Strings from a .dat file, see documentation for more details$.localize = true;

try {

// Get the currently active document.
var doc = app.activeDocument;

// If document has been saved once...
if ( doc.saved ) {
// One document save is needed so that we know where to save the psd.
doc.save();
}
// Document has not been saved yet...
else {

// An action is triggered to prompt save as dialog.
// You'd think that this would be easy to do, but I
// couldn't figure out a better way for doing this.
app.doAction('save','Auto Save PSD');

}

var data = GetDataFromDocument( doc );
AutoSavePSD( doc, data );

} // try end

catch( e ) {
// always wrap your script with try/catch blocks so you don't stop production
// remove comments below to see error for debugging
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
// Function: AutoSavePSD
// Use: save the current document as a copy
// Input: a document must be active
// Params: folder, filename, extension
// Output: file saved as a copy next to the current active document
///////////////////////////////////////////////////////////////////////////////
function AutoSavePSD( doc, data ) {

// Save as .psd
var psd_Opt = new PhotoshopSaveOptions();
psd_Opt.layers = true; // Preserve layers.
psd_Opt.embedColorProfile = true; // Preserve color profile.
psd_Opt.annotations = true; // Preserve annonations.
psd_Opt.alphaChannels = true; // Preserve alpha channels.

// Excuse me sir. What time is it? ...where am I?
var time                      = new Date();
var seconds                   = time.getSeconds();
var sec                       = seconds < 10 ? '0' + seconds : seconds;
var minutes                   = time.getMinutes();
var min                       = minutes < 10 ? '0' + minutes : minutes;
var hours                     = time.getHours();
var hour                      = hours < 10 ? '0' + hours : hours;
var day                       = time.getDate();
var dd                        = day < 10 ? '0' + day : day;
var month                     = time.getMonth() + 1;
var mm                        = month < 10 ? '0' + month : month;
var yyyy                      = time.getFullYear();
var date                      =  yyyy + '-' + mm + '-' + dd + '-' + hour + '-' + min + '-' + sec;

// New folder for the auto saves...
var fileName                  = data.fileName;
var folderPath                = data.folder + '/' + fileName + ' (-autoSave-)/';
var asFolder                  = new Folder( folderPath );

// If folder doesn't exist, let's create one.
if( !asFolder.exists ) asFolder.create();

// Creates the additional .psd file.
doc.saveAs( File( folderPath + fileName + ' ' + date + '.psd' ), psd_Opt, true );
}

///////////////////////////////////////////////////////////////////////////////
// Function: GetDataFromDocument
// Usage: pull data about the document passed in
// Input: document to gather data
// Output: Object containing folder, fileName, fileType, extension
///////////////////////////////////////////////////////////////////////////////
function GetDataFromDocument( inDocument ) {

var data           = new Object();
var fullPathStr    = inDocument.fullName.toString();
var lastDot        = fullPathStr.lastIndexOf( "." );
var fileNameNoPath = fullPathStr.substr( 0, lastDot );
var lastSlash      = fullPathStr.lastIndexOf( "/" );

data.extension     = fullPathStr.substr( lastDot + 1, fullPathStr.length );
data.fileName      = fileNameNoPath.substr( lastSlash + 1, fileNameNoPath.length );
data.folder        = fileNameNoPath.substr( 0, lastSlash );
data.fileType      = inDocument.fullName.type;

return data;

}
• got my vote. haven't tried it out, but it is pretty close to the OP's desired solution. – horatio Mar 29 '13 at 20:28
• @horatio I usually keep to photoshop Actions as much as possible, but since this was something that I have also wanted for a long time, I figured, why not. Gonna be using it my self from now on :) – Joonas Mar 29 '13 at 21:18
• ok.. this looks greeeeat! I'll check it out and let you know. – Flavius Frantz Apr 17 '13 at 12:32

It's not quite what you were suggesting but if you're running a mac why not set up time machine running every hour then you can always revert back to previous versions? There must be a equivalent for windows as well

I'm doing more development than design these days and it's very common to use Source Code Management (SCM) (keep track of changes, merges from multiple users working on the same project, etc.).

Common SCM options are git, mercurial, svn, etc. Still there are barriers that apply when it comes to designers. I've worked in a media agency for a few good years and I've setup an SVN server. The hardest part wasn't managing it or dealing with merges, but convincing designers to use it. I've explained the obvious advantages and installed the SCPlugin so there's no need to use the command line interface. From my experience the main issues were:

1. understanding/getting used to how commits work
2. getting used/in the habit of committing
3. most design assets are binary files (not ascii) so merging versions of the same files doesn't work that well

If you don't want to install your own SCM server you can always use sites like:

• github
• bitbucket
• Google Code Free solutions usually mean your repositories are public/visible to everyone but you have the option to pay a small fee for the hosted private repository option.

For svn there are commercial apps with pretty icons like Versions or Cornerstone. For git/mercurial I recommend SourceTree

Long story short, the idea is versioning is what you need, but I presume the more 'designer friendly'(no command line mumbo jumbo), the better.

I presume a Photoshop script that provides a "Save a version" menu item which behind the scenes deals with the committing updates isn't hard to whip out.

Question is does it make sense to write something from scratch or use an existing option. There are a couple of commercial options which sound simple enough to use, but I personally haven't tried them:

1. Simply use DropBox. Packrat seems to offer the option you need.
2. Try PixelNovel's SVN Photoshop plugin

HTH

• The problem with this approach is that OP will need to hit "save" and then manually commit the file/branch. He/she wants something which happens at the software level or even protects files from overwrites. Do you know if any of these have a way to watch a folder and auto-commit-on-change? – horatio Mar 28 '13 at 16:56

Someone on Superuser asked about "watched folders" ( https://superuser.com/questions/226828/how-to-monitor-a-folder-and-trigger-a-command-line-action-when-a-file-is-created ). The script is task specific, but shows a proof of concept.

I also note that Robocopy (ms devkit for xp; standard on windows Vista and above) has "/mot:m" and "/mon:n" switches that will rerun the same robocopy command set when m minutes has passed or n files have changed respectively.

The idea here is that you save to a special watch folder and the command(s) above would detect the change and handle renaming and/or moving the file to a non-watched folder. You'd want to run them manually before you start working and then kill the processes when you are done with your session.

Robocopy cannot handle auto-renaming, so the script-based approach is probably better. Note that the script quoted above checks for new files (this can be changed of course). Robocopy can deal with new and/or different files.

• hm..this one is interesting also – Flavius Frantz Apr 17 '13 at 12:28

There are at least two 3rd party applications which do this as well. I haven't used either solution, but some may find these helpful:

1. Pixelapse: Saves a version of your file to the web after you hit save. You can then share this version w/ other collaborators (team, client, etc.), and to other designers.
2. Layervault: Saves a snapshot of your file when you hit save, and allows you to revert to this version (or any other) at any point in the lifetime of the file.

Bottom line: If you're looking for archiving/backup functionality along with version control, sharing, and feedback then either of these apps might be for you.