Difference between revisions of "Recovering crashes manually"
(→Other Tools) |
Galeandrews (talk | contribs) (tweak first section) |
||
Line 1: | Line 1: | ||
− | {{intro|If Audacity is not able to shut down properly (for example because the program crashes, or the computer loses power suddenly), unsaved data may be left in Audacity's temporary folder. The instructions below will help you recover that unsaved data in Audacity 1.2.x versions.|Audacity Beta 1.3.2 and later already has automated data recovery built in, which should offer to recover unsaved data when you restart after a crash. For these versions, you only need to use these instructions if automated recovery does not work | + | {{intro|If Audacity is not able to shut down properly (for example because the program crashes, or the computer loses power suddenly), unsaved .au data files may be left in Audacity's temporary folder. The instructions below will help you recover that unsaved data in Audacity 1.2.x versions.|Audacity Beta 1.3.2 and later already has automated data recovery built in, which should offer to recover unsaved data when you restart after a crash. For these versions, you only need to use these instructions if automated recovery does not work. '''Audacity 1.3 must be left open until recovery is complete.''' |
Automated recovery will be added to the next stable 1.4.0 version of Audacity.}} | Automated recovery will be added to the next stable 1.4.0 version of Audacity.}} | ||
Line 5: | Line 5: | ||
== How to recover unsaved data == | == How to recover unsaved data == | ||
− | + | Unless you had saved an Audacity project prior to the crash, Audacity 1.2 will ask you upon restart if you want to delete temporary files. Say '''"No"'''. If you had saved a project before the crash, there will be no message. | |
− | |||
+ | '''Temporary folder''' | ||
− | + | If Audacity reports there are temporary files, these will be in its temporary folder. Check the {{menu|Directories tab of Audacity preferences}} to find out where your temporary folder is, then recover the data by one of the methods below. | |
− | {{hint|1=On Mac computers, the temporary folder is usually hidden in the Finder. To access it, use the '''"Go To Folder"''' command in the Finder, or type <span style="color:#FA58AC;font-size:118%">open tmp/ </span> and insert the name of the folder after the <span style="color:#FA58AC;font-size:118%"> / </span>. If that doesn't work, try to make the Finder show its hidden files and folders by entering in the terminal:<br><span style="color:#FA58AC;font-size:118%">defaults write com.apple.finder AppleShowAllFiles -bool </span><br>or try | + | {{hint|1=On Mac computers, the temporary folder is usually hidden in the Finder. To access it, use the '''"Go To Folder"''' command in the Finder, or type <span style="color:#FA58AC;font-size:118%">open tmp/ </span> and insert the name of the folder after the <span style="color:#FA58AC;font-size:118%"> / </span>. If that doesn't work, try to make the Finder show its hidden files and folders by entering in the terminal:<br><span style="color:#FA58AC;font-size:118%">defaults write com.apple.finder AppleShowAllFiles -bool </span><br>or try [http://macupdate.com/info.php/id/5721 TinkerTool] to do the same thing.}} |
+ | |||
+ | |||
+ | '''Project _data folder''' | ||
+ | |||
+ | If you had saved a project, the data is in a _data folder in the same directory as the .aup file you had saved. If you have the .aup project file, open it and you will return to the last saved state of the project. If the last saved state was a new, empty project, or if you don't have an .aup project file, then you will need to recover the data from the _data folder by one of the methods below. | ||
== Manual recovery == | == Manual recovery == | ||
− | + | Use the "Import Audio" command in the Project to open all of the .au files in the Audacity temporary folder or project _data folder. Use shift-click or control-click to select multiple files. The files will be in approximately 10-second chunks and will be on separate tracks in the Audacity screen. Files from stereo tracks will alternate between left and right channels. | |
#Click in the track panel (by the Mute/Solo buttons) of the first track you want to join to the topmost track and click {{menu|Edit > Cut}}. | #Click in the track panel (by the Mute/Solo buttons) of the first track you want to join to the topmost track and click {{menu|Edit > Cut}}. |
Revision as of 08:36, 2 March 2009
If Audacity is not able to shut down properly (for example because the program crashes, or the computer loses power suddenly), unsaved .au data files may be left in Audacity's temporary folder. The instructions below will help you recover that unsaved data in Audacity 1.2.x versions.
|
Contents
How to recover unsaved data
Unless you had saved an Audacity project prior to the crash, Audacity 1.2 will ask you upon restart if you want to delete temporary files. Say "No". If you had saved a project before the crash, there will be no message.
Temporary folder
If Audacity reports there are temporary files, these will be in its temporary folder. Check the
to find out where your temporary folder is, then recover the data by one of the methods below.defaults write com.apple.finder AppleShowAllFiles -bool
or try TinkerTool to do the same thing.
Project _data folder
If you had saved a project, the data is in a _data folder in the same directory as the .aup file you had saved. If you have the .aup project file, open it and you will return to the last saved state of the project. If the last saved state was a new, empty project, or if you don't have an .aup project file, then you will need to recover the data from the _data folder by one of the methods below.
Manual recovery
Use the "Import Audio" command in the Project to open all of the .au files in the Audacity temporary folder or project _data folder. Use shift-click or control-click to select multiple files. The files will be in approximately 10-second chunks and will be on separate tracks in the Audacity screen. Files from stereo tracks will alternate between left and right channels.
- Click in the track panel (by the Mute/Solo buttons) of the first track you want to join to the topmost track and click .
- Click after the end of the topmost track
- Click and the cut track will attach to the end of the topmost track.
- Repeat as necessary to join all the tracks onto the topmost track.
Automatic recovery tools
A few tools have been written which can automate data recovery.
Note: all these utilities require the .au files to be input in consecutive number order. This should normally be the case if recovering data from Audacity 1.2.x. If you have to recover data from 1.3.x, the files will not be in consecutive number order and they will need to be made such.
If the files need to be renumbered for any reason, open Audacity's temporary or project _data folder in your system file manager, and resort the .au files by time modified. They then need to be renamed using a numeric sequence whilst they are sorted by time modified. An arrangement looking something like this should work:
- b001.au 15:56:02
- b002.au 15:56:02
- b003.au 15:56:10
- b004.au 15:56:10
- Open the required folder in xplorer2 and sort the .au files by time modified as above
- to select all the files
- File > Mass Rename
- In the "Mass Rename Wizard", click in "Target name template" and type the alphanumeric name you want for the first file, with a $ after the letter. For example, e$0001.au will rename the files to e0001.au, e0002.au and so on. Use enough zeros in the filename so that all the .au files will have the same number of digits.
- Press "Preview", and if the preview looks correct, hit "Rename".
Also note there is a 2 GB maximum size for any WAV file created from the reconstructed temporary files and there may be errors if this size is exceeded. This implies an upper limit of 2000 .au files. Sometimes (probably due to bugs in the utilities) there can be errors before this limit is reached. In that case you would need to split the .au files in the temporary or_data folder into two or more groups, each containing consecutively numbered files, and recover each group separately.
Audacity Recovery Utility
The Audacity Recovery Utility was written by an Audacity developer to automate crash recovery. For Windows systems, follow the instructions given on the above page. On Mac and Linux, you may need to install additional libraries before you can use the utility, following the instructions given for Linux. For Mac systems, the easiest way is to use the following utilities instead which are ready-compiled with the necessary libraries:
Then follow the instructions on Audacity Recovery Utility from "About the Audacity Recovery Utility" onwards.
Aud_Recover command-line recovery utility
This is a portable command line program by Tyler Knott which does much the same as the Audacity Recovery Utility but is not written in python/ wxpython, so does not need those libraries in order to compile it. Due to limitations in the C standard library this program cannot create files larger than 2 GB.
You can download aud_recover version 1.1.1 here . This download contains binaries for Windows (32-bit) and the cross-platform C source code.
To recover files using this program:
- Find the first and last files in the recording by listening to them (if you've only done one recording then that should be the first and the last files in the directory).
- Place the aud_recover program in your Audacity temp directory
- aud_recover requires several settings to run. You can either enter them as command-line options (use --help for more infmormation) or interactively by simply running the program.
- aud_recover will generate one or more files (depending on how many channels of audio you recorded, usually one or two for mono and stereo). You need to import these into Audacity using the Import Raw Data option. To configure the dialog, follow these directions:
- You can determine the sample format (the first drop-down) and the endianness (the second) using the included auinfo utility.
- The header offset should be zero and the amount to import should be 100%. No matter how many channels were recorded you should keep it set to 1 (see the next numbered step).
- The sample rate should be set to the sample rate you recorded at (the sample rate given by auinfo is always 44100, even if that is incorrect, due to a bug in Audacity).
- Repeat this step for every output file.
- For stereo files set the left channel to left, the right channel to right, then select "Make Stereo Track" from the track popdown menu to convert it to a stereo track.
The resulting track should be exactly what was recorded before Audacity crashed.
If you have any questions, comments, or bug reports please don't hesitate to email me (tknott _at_gmail_dot_com).
Other Tools
This freeware tool can automatically join large numbers of files. (Note: One Audacity user reported an audible noise at the places where the files were joined.)
- 123 Audio Video Merger: http://www.manitools.com/123avm/
- tail and cat (On Linux/UNIX systems)
- I found that 123 AV Merger gave me exactly what I would get with cat. I was able to get around this with the following procedure: 1. I had to throw out all odd-numbered files (1,3,5...) 2. Using tail's byte-count switch "-c" I copied each remaining .au to a new .au.tmp file 3. Using cat I ran all the .au.tmp files into on long .au 4. Imported the final .au with "Import RAW Data" 5. Exported the track as wav
I played around with exactly how many bytes to tail until there was no longer any sharp noises at each joint. I don't have that number with me right now - I'll try to get it later.
This could be theoretically written into a script. I'll try to add more details later.
<a href="http://sox.sourceforge.net/">sox</a> can concatenate the files together.
Usage: sox file1 .. filen outfile
(Sox can handle up to 32 files at a time.)
e.g. for a mono recording:
% sox b0000*.au b0001*.au b0002*.au junk0.au
After I'm done, I have just several au files to import (a lot fewer than before).
I created a hard-link backup of a directory full of 256 files named e00039df.au etc. with names that did not correspond to modification times, then used sox:
% cp -la d00 d00.bak % cd d00 % mv `ls --full-time e*.au|sort|head -n1|cut -d ' ' -f 9` 0.au % counter=0 % while [ `ls e*.au|head -n1` ]; do >sox ${counter}.au `ls --full-time e*.au|sort|head -n30|cut -d ' ' -f 9` $[counter+1].au >rm -f `ls --full-time e*.au|sort|head -n30|cut -d ' ' -f 9` ${counter}.au >let counter=$[counter+1] >done
When the operation was completed, I moved the resulting .au file to the next directory full of files (d01 in this case) and renamed it to 0.au, then ran again:
% counter=0 % while [ `ls e*.au|head -n1` ]; do >sox ${counter}.au `ls --full-time e*.au|sort|head -n30|cut -d ' ' -f 9` $[counter+1].au >rm -f `ls --full-time e*.au|sort|head -n30|cut -d ' ' -f 9` ${counter}.au >let counter=$[counter+1] >done
rinsed & repeated for 4 directories with a total of 1.2GB
I found it easier to write the following Python script that I used under Mac OS X to recover 1.2GB of data. It was easier than the above solutions.
% cat recover.py # python script to recover audacity recording after crash import os directory = raw_input('Enter directory where temp data files are: ') rawfiles = os.listdir(directory) # grab directory listing files = [] # only interested in .au files and for i in rawfiles: # prepend each with the directory name if i[-3:] == '.au': files.append(directory+'/'+i) files.sort() # sort files so the result will be in proper sequence # open the output file for the recovery fp = open('recover.au','wb') # write the whole first file because it has the header dd = open(files[0],'rb').read() fp.write(dd) # for every other file, write from the data offset on for i in files[1:]: dd = open(i, 'rb').read()[12380:] fp.write(dd) # close recovered sound file fp.close()
I had problems using the above script. I found that it didn't really write every other file, so if you try to recovery stereo recordings you get a nasty echo effect since every other file is the left or right channel.
The problem with the script above is that you coded the slice wrong:
>>> x=(1,2,3,4,5,6,7,8,9,10) # sample data >>> x[1:] # doesn't do what you wanted (2, 3, 4, 5, 6, 7, 8, 9, 10) >>> x[::2] # this gets the odd-numbered items (1, 3, 5, 7, 9) >>> x[1::2] # this gets the even-numbered ones (2, 4, 6, 8, 10)
So, you just need to change the line "for i in files[1:]:" to either "for i in files[::2]:" (for the first channel), or "for i in files[1::2]:" (for the other).
I wrote this modified version of the script to try to put the two tracks into two recovery files. Unfortunately, just importing the recovered files doesn't seem to give you perfect stereo again because of sync issues, possibly due to missing files in the recovery set. Give it a shot, it might work for you.
# python script to recover audacity recording after crash import os directory = raw_input('Enter directory where temp data files are: ') rawfiles = os.listdir(directory) # grab directory listing files = [] # only interested in .au files and for i in rawfiles: # prepend each with the directory name if i[-3:] == '.au': files.append(directory+'/'+i) files.sort() # sort files so the result will be in proper sequence # open the output file for the recovery fp = open('recover.au','wb') # write the whole first file because it has the header dd = open(files[0],'rb').read() fp.write(dd) #this is intented for recoverying stereo and the second file should be the # first part of the second track, so write the whole file. fpp = open('recover2.au','wb') # write the whole second file because it has the header for track 2 dd = open(files[1],'rb').read() fpp.write(dd) #it's stereo, so the .au files should alternate left & right channels, so files #should be written to our two recovery files alternately starting with the 3rd file in our list #count serves as a quick hack to let us alternate recovery files count = 1 #this is just to give a quick count so you can see if the two recovery files got the same number of files added to them track_one_files = 1 track_two_files = 1 # for every other file, write from the data offset on for i in files[2:]: if count == 1: #write to first recovery file dd = open(i, 'rb').read()[12380:] fp.write(dd) count = 0 track_one_files = track_one_files + 1 else: #write to second recovery file dd = open(i, 'rb').read()[12380:] fpp.write(dd) count = 1 track_two_files = track_two_files + 1 print "Files recovered for track 1:" print track_one_files print "Files recovered for track 2:" print track_two_files # close recovered sound files fp.close() fpp.close()
I was unable to get sox to work as the above tip instructed. Sox always complained about a missing operation or misinterpreted the filename of one of the Audacity temp files as a filter to perform on the other files.
So, I used sox in a different way. I was trying to rescue an hour-long mono recording on a Unix-like system (a Fedora Core 3 GNU/Linux system). First, I made a copy of the temp directory and its files:
$ cp -r /tmp/audacity1.2-jbn ~/rescue
Then I used sox to convert the AU temp files into raw files (headerless files). Since Audacity had already numbered the files with leading zeroes (and perhaps because I didn't have that many of them to work on), I could use an ordinary shell wildcard to do the work:
$ for f in b*.au ; do sox ${f} -t raw ${f}.raw ; done
I concatenated the raw files together to make one hour-long mono raw file. I had to use raw files to do this, concatenating the AU files together (each with its own header) would have produced a periodic noise (because Audacity was trying to interpret the AU header data as sound data).
$ cat *.raw > bigfile.raw
And then I imported the raw file into Audacity specifying the appropriate number and signedness of the samples (16-bit signed PCM, in my case), endianness (Big-endian, in my case), channels (1 channel for mono), and sample rate (44,100 samples per second, in my case). I wanted to import the whole file (100%) starting from the beginning (0 byte offset).
I was left with a file I could export to WAV, play, and edit normally. 1
I recently have to kill audacity and as a result I lost the aup project file for my recording of 3000+ au files. What exactly should I do to restore the aup project file from the thousands au files?
i tried to add the .au files to a winamp playlist ordered by date (ascending) then save the output as a wav file this solved my problem. i hope it will help yours. (My project was a recording project so the order of files were easily understood)
I also had success with the winamp method using the write to disk output utility. Didn't work for me until I first converted each individual .au into .wav files then converted all the .wav files into a single .wav file.
Yet another way to do it, this time with perl:
#!/usr/bin/perl use strict; use warnings; my $limit = 32; # Sox can only read this many files at a time my @files = <*.au>; my $count = 0; while (my $set = join ' ',splice @files,0,$limit) { my $cmd = "sox $set recovered_$count.au"; `$cmd`; unlink "recovered_" . ($count - 1) . ".au" if $count; if (@files) { unshift @files,"recovered_$count.au"; $count++; } else { rename "recovered_$count.au","recovered.au"; } }
Run this in a directory full of .au's...