discuss: Bare Metal Recovery HOWTO renamed, moved.


Previous by date: 23 Dec 2001 17:54:36 -0000 Re: Bare Metal Recovery HOWTO renamed, moved., jdd
Next by date: 23 Dec 2001 17:54:36 -0000 new member, Rajesh Fowkar
Previous in thread: 23 Dec 2001 17:54:36 -0000 Re: Bare Metal Recovery HOWTO renamed, moved., jdd
Next in thread: 23 Dec 2001 17:54:36 -0000 Re: Bare Metal Recovery HOWTO renamed, moved., jdd

Subject: Re: Bare Metal Recovery HOWTO renamed, moved.
From: Charles Curley ####@####.####
Date: 23 Dec 2001 17:54:36 -0000
Message-Id: <20011223105347.A25269@trib.com>

Finally, some negative criticism (Negative as in "here are some
problems", not derogatory). I was starting to wonder if I had done
something wrong. :-)

On Sun, Dec 23, 2001 at 10:04:57AM +0100, jdd wrote:
> Le Samedi 22 Décembre 2001 23:57, Charles Curley a écrit :
> >I have renamed & moved the "Bare Metal Recovery HOWTO". It is now the
> >"Linux Complete Backup and Recovery HOWTO", and you can find the
> >latest version at
> >http://w3.trib.com/~ccurley/Linux-Complete-Backup-and-Recovery-HOWTO.html.
> 
> I'm in the stage of studying backup and recovery for my work, so I got a look 
> to this HOWTO.
> 
> I think the new title is misleading. This HOWTO gives a set of scripts to 
> acheive a particular kind of backup & recovery. this kind is not good for 
> anybody and so the title is not so good.

What would you suggest? Why is this kind of backup & restore not good
for anyone? What would you like to see?

> 
> I think the main problem of this HOWTO is that the goal of the scripts is not 
> so clear, that is I saw no discussion of what files will you backup (there is 
> such a title, but no answer) and this is essential.

There is some discussion at "Creating the Stage 1 Back Up". Is it not
sufficient? If not, what would you add? I did not give a definitive
list because there is no such thing, and I did encourage the reader to
experiment. There is an implicit list in the script save.metadata.

Or do you mean, what files should I back up _in general_? General
backups are outside the brief of the HOWTO.

> 
> problem I have with this text are:
> 
> *it makes the restoring to the exact same hard drive mandatory (restoring the 
> exact partition table), when it says it should be used in case of computer 
> destruction. If your computer is crashed and unusable you will _never_ be 
> able to find the same exact hard drive. 

Not entirely true, as many shops keep spares around for exactly this
reason. But the point is well taken. You can, of course:

1) Edit the partition table input file. I've done that a few times.

2) Hand build a new partition table and go from there. That is one
   reason why restore.metadata does not call the hard drive rebuilding
   script. (Another being that I don't know what hard drives you
   have.)

I just added a section on limitations to the HOWTO; it is in the
overview, and is based on what I said above.

If you would care to write a partition editor (possibly along the
lines of the one that comes bundled with Windows NT) for use with the
output files I provide, I would be delighted. (See the To Do list.)

> If only the MBR is gone you can restore it without all this mess and
> don't need to have a backup (i have a howto just for that).

Quite right, and I should probably refer to your HOWTO. Where do I
find it? It looks like the "LILO, Linux Crash Rescue HOW-TO" would
also be useful. Anything else I can refer the reader to? Any decent
books, for example?


> 
> *it uses a zip drive to backup the most important data. I'm unshure of the 
> liability of the zip drive and more I'm unshure of the availability of the 
> zip drive if ever your computer is stolen (and the drive with it). But 
> anybody have a cd reader and so the backup should be done on cd.

The reliability is reasonable, and if you want you can make multiple
copies. Also, my scripts for backing up to another computer back the
ZIP drive up as well so that you can build a replacement ZIP disk if
need be. ZIP disks, like ALL media, do fail, but that fact is well
enough known to be outside the brief of the HOWTO.

As for making a CD-ROM stage one backup, I'd be delighted if you would
write the code, whether you contribute to this HOWTO or not. A CD-ROM
that would boot to tomsrtbt, with the first stage restore data on the
rest of it, would be just the ticket. In fact, I just added that to
the To Do section.


> 
> *anyway I have a more than 1 gb home, I can't even save it to cd (jpeg and 
> pdf don't compress) in one file - I use tar incremental.

Right, which is why I referred to multiple stages in the "Overview".

> 
> *When - time to time - I need to change my system (new hard drive, usually), 
> I use to upgrade my distribution, mostly because it's necessary to accomodate 
> new hardware.

Outside the brief of this HOWTO, but if you want to adapt it, please do.

> 
> *making a system backup is pretty easy using a separate partition or lan with 
> tar or partimage, this allow to start with a new system in a handfull of 
> minutes in case of accidental deletion (I use it with students).

Yep, but also outside the brief of this HOWTO. But see the script
"get.tester" for how I do exactly that over SSH.

> 
> * the question I think essential is so "what files may I backup to be able to 
> restore a running linux with the same operations (that is /home, /root, what 
> part of /etc, /usr/X11/etc?) but with different hardware and eventually 
> distribution...

Again, outside the brief of the HOWTO. But with the cost of media
today vs. the cost of one's time, I generally just make total backups
and don't bother with incrementals.

-- 

		-- C^2

The world's most effective anti-virus software: Linux.

Looking for fine software and/or web pages?
http://w3.trib.com/~ccurley

--> -->
 
 
<type 'exceptions.IOError'>
Python 2.5.2: /usr/bin/python
Sat Jun 29 12:43:50 2024

A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.

 /opt/ezmlm-browse-0.20/<string> in ()
 /opt/ezmlm-browse-0.20/main.py in main()
  424 
  425         if path is not None:
  426                 main_path(path)
  427         else:
  428                 main_form()
global main_form = <function main_form at 0x9d44c6c>
 /opt/ezmlm-browse-0.20/main.py in main_form()
  378         except ImportError:
  379                 die(ctxt, "Invalid command")
  380         module.do(ctxt)
  381 
  382 def main():
module = <module 'commands.showmsg' from '/opt/ezmlm-browse-0.20/commands/showmsg.pyc'>, module.do = <function do at 0x9d4c764>, global ctxt = {'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}
 /opt/ezmlm-browse-0.20/commands/showmsg.py in do(ctxt={'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'})
   18         write(html('msg-pager') % ctxt)
   19         write('<hr>')
   20         sub_showmsg(ctxt, ctxt[MSGNUM])
   21         write('<hr>')
   22         write(html('msg-pager') % ctxt)
global sub_showmsg = <function sub_showmsg at 0x9d441ec>, ctxt = {'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, global MSGNUM = 'msgnum'
 /opt/ezmlm-browse-0.20/globalfns.py in sub_showmsg(ctxt={'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, msgnum=1965)
  229         format_timestamp(ctxt, ctxt)
  230         write(html('msg-header') % ctxt)
  231         rec_showpart(ctxt, msg, 0)
  232         write(html('msg-footer') % ctxt)
  233         ctxt.pop()
global rec_showpart = <function rec_showpart at 0x9d441b4>, ctxt = {'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, msg = <email.message.Message instance at 0x9da2d6c>
 /opt/ezmlm-browse-0.20/globalfns.py in rec_showpart(ctxt={'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x9da2d6c>, partnum=1)
  205                 else:
  206                         for p in part.get_payload():
  207                                 partnum = rec_showpart(ctxt, p, partnum+1)
  208         else:
  209                 write(html('msg-sep') % ctxt)
partnum = 1, global rec_showpart = <function rec_showpart at 0x9d441b4>, ctxt = {'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, p = <email.message.Message instance at 0x9daa26c>
 /opt/ezmlm-browse-0.20/globalfns.py in rec_showpart(ctxt={'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x9daa26c>, partnum=2)
  208         else:
  209                 write(html('msg-sep') % ctxt)
  210                 sub_showpart(ctxt, part)
  211         return partnum
  212 
global sub_showpart = <function sub_showpart at 0x9d44144>, ctxt = {'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part = <email.message.Message instance at 0x9daa26c>
 /opt/ezmlm-browse-0.20/globalfns.py in sub_showpart(ctxt={'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x9daa26c>)
  164         type = ctxt[TYPE] = part.get_content_type()
  165         ctxt[FILENAME] = part.get_filename()
  166         template = html('msg-' + type.replace('/', '-'))
  167         if not template:
  168                 template = html('msg-' + type[:type.find('/')])
global template = <function template at 0x9d3ce9c>, global html = <function html at 0x9d3ced4>, type = 'application/pgp-signature', type.replace = <built-in method replace of str object at 0x9da7d08>
 /opt/ezmlm-browse-0.20/globalfns.py in html(name='msg-application-pgp-signature')
   40 
   41 def html(name):
   42         return template(name + '.html')
   43 
   44 def xml(name):
global template = <function template at 0x9d3ce9c>, name = 'msg-application-pgp-signature'
 /opt/ezmlm-browse-0.20/globalfns.py in template(filename='msg-application-pgp-signature.html')
   31         except IOError:
   32                 if not _template_zipfile:
   33                         _template_zipfile = zipfile.ZipFile(sys.argv[0])
   34                 try:
   35                         f = _template_zipfile.open(n).read()
global _template_zipfile = None, global zipfile = <module 'zipfile' from '/usr/lib/python2.5/zipfile.pyc'>, zipfile.ZipFile = <class zipfile.ZipFile at 0x9cd5a7c>, global sys = <module 'sys' (built-in)>, sys.argv = ['-c', '/opt/ezmlm-browse-0.20']
 /usr/lib/python2.5/zipfile.py in __init__(self=<zipfile.ZipFile instance at 0x9d51aac>, file='-c', mode='r', compression=0, allowZip64=False)
  337             self.filename = file
  338             modeDict = {'r' : 'rb', 'w': 'wb', 'a' : 'r+b'}
  339             self.fp = open(file, modeDict[mode])
  340         else:
  341             self._filePassed = 1
self = <zipfile.ZipFile instance at 0x9d51aac>, self.fp = None, builtin open = <built-in function open>, file = '-c', modeDict = {'a': 'r+b', 'r': 'rb', 'w': 'wb'}, mode = 'r'

<type 'exceptions.IOError'>: [Errno 2] No such file or directory: '-c'
      args = (2, 'No such file or directory')
      errno = 2
      filename = '-c'
      message = ''
      strerror = 'No such file or directory'