SUMMARY: Copying Links

From: TOBY POTTS (tobypotts@pmsc.com)
Date: Wed Jan 15 1997 - 08:14:07 CST


     THANKS TO ALL WHO RESPONDED TO MY QUESTIONS, YOU'RE LIFE SAVERS...
     
     Original Question:
     
     Hi all,
     
     Is there an easy way to copy files while preserving their original
     links?
     
     Thanks to everyone in advance...
     
     
     ANSWERS:
     
     tar can also be used to move hierarchies with the command:
     
     example% cd fromdir; tar cf - .
     | (cd todir; tar xfBp -)
     
     Tada. :)
     
     -James
     --
     James Neal (neal@ee.pdx.edu) | Microsoft is not the
     answer. UNIX S/N Administrator | Microsoft is the
     question, EE/CS/ME/CE - Portland State University | NO is the answer.
     --=={{ Systems related problems -> cat@cat.pdx.edu }}==--
     
     
     
     There are many ways that you can do this, but one of the simplest is
     just to tar the files like this:
     
     tar cvf - <source> | (cd <dest_dir>; tar xvf -)
     
     For example, if you are in /tmp and want to copy the contents of
     directory "blah" to "/tmp/blah1" preserving links, do it like this:
     
     tar cvf - blah | (cd /tmp/blah1; tar xvf -)
     
     All links will be preserved. When tar tars up a symbolic link,
     because the "v" (verbose) is specified, you will see "symbolic link".
     
     If you have any questions, please don't hesitate to ask.
     
     Jason Keltz
     jas@cs.yorku.ca
     
     
     
     directory/file top copy for example is data
     
     tar cf - data | (cd /new/location ; tar xpf -)
     
     this will copy everything except character files.
     
     Satish
     
     
     
     use tar
     
     do "man tar" to read about it
     
     marina
     
     
     
     tar and cpio will both work. Here's my favorite technique for copying
     dirs:
     
     /bin/find . -xdev -depth -print|cpio -pduml <destination directory>
     
     That copies everything from your current directory on downwards to the
     destination you specify. It's how I copy disks.
     --
     Chris Marble - HMC UNIX Systems Manager, chris_marble@hmc.edu
     My opinions are my own and probably don't represent anything anyway.
     
     
     
     two ways that are fairly simple:
     
     sun% cd <orig dir> ; tar -cvf - . | ( cd <new dir> ; tar -xvfBp - )
     or
     sun% cd <new dir> ; ufsdump 0f - <orig dir> | ufsrestore -rf -
     
     the ufsdump method also preserves time stamps. in both method, the
     owner of the link will always be root.
     
     to change the owner you can use several methods including:
     
     sun% cd <new dir> ; find . -type l -print -exec chown ??? {} \;
     
     have fun.
     
     
     
     Hello Toby,
     just use rdist.
     
     Bye Richard.
     
     --
     Richard Aures
     Unix System Support
     Fon: +49(0)172 6527573 Fax: +49(0)911 9758203 Web:
     http://www.erlangen.netsurf.de/richard.aures
     
     
     
     You can use this tar - comand
     
     cd <source>
     tar -cf - . | (cd <target> ; tar -xvfl -)
     
     The option -l , is the 'copy link' option.
     
     Trond Isaksen
     trond.isaksen@nopow.abb.no
     
     
     
     tar preserves links
     
     cd fromdir
     tar cf - * | (cd todir;tar xf -)
     tony@csc20.essex.ac.uk (Lawson A S)
     
     
     
     By links do you mean "symlinks" and "hard links"? "tar" can do this
     
     eg
     ( cd /old/directory ; tar cf - ) | ( cd /new/directory ; tar xvfp - )
     Stephen Harris <sweh@mpn.com>
     
     
     
     In Bourne shell, the most reliable way to do this is: (cd $SRCDIR;tar
     cf - .)|(cd $DEST;tar xvf -)
     
     replacing $SRCDIR and $DEST with the full pathnames to the source and
     destination directories respectively.
     
     ---Avi---
     
     
     
     Try using tar, for example:
     
     tar cvf - my_directory | (cd ../my_new_directory; tar xf -)
     
     It will copy all files under my_directory to ../my_new_directory,
     preserving all links in it
     
     Regards,
     
     Fernando Frota Redigolo
     fernando@larc.usp.br
     
     
     
     I would use "tar" and "dd"
     
     Examples:
     
     ______________________________________________________________________
     __________ ___
     Note: The following commands are for tape device /dev/rst0. If you are
     using a
     second tape device, i.e., 1/4" or 8mm, replace /dev/rst0 with
     /dev/rst1.
     ----------------------------------------------------------------------
     ---------- ---
     #
     #---reads writes from: local 1/4" tape to 1/4" remote tape. #
     % dd if=/dev/rst0 bs=126b | rsh <remotesystemname> dd of=/dev/rst0
     bs=126b
     
     #
     #---reads and writes from: remote tape to local tape. #
     % rsh <remotesystemname> dd if=/dev/rst0 bs=126b | dd of=/dev/rst0
     bs=126b
     
     #
     #---reads and writes from: local disk to remote tape. #
     % tar cvfb - 20 <filenames> | rsh <remotesystemname> dd of=/dev/rst0
     obs=20b
     
     #
     #---reads ands writes from: remote tape to local disk. #
     % rsh <remotesystemname> dd if=/dev/rst0 bs=126b | tar -xvpBfb - 126
     <filenames>
     
     #
     #---reads ands writes from: remote tape to local disk. (different
     diredctory) #
     rsh <remotesystemname> dd if=/dev/rst0 bs=126b | (cd <newdir> ; tar
     -xvpBfb - 126)
     
     #
     #---reads ands writes from: remote disk to local tape. #
     % rsh <remotesystemname> tar cvfb - 126 <filenames> | dd of=/dev/rst0
     obs=126b
     
     #
     #---reads and writes from: local tape to remote disk. #
     % dd if=/dev/rst0 bs=126b | rsh <remotesystemname> | tar -xvpBfb - 126
     <filenames>
     
     #
     #---reads and writes from: remote disk to local disk (same directory).
     #
     % rsh <remotesystemname> tar -cvfbB - 1000 <filenames> | tar -xvfbBp -
     1000
     
     #
     #---reads and writes from: remote disk to local disk (different
     directory). #
     % rsh <remotesystemname> cd <directory> ; tar -cvfbB - 1000
     <filenames> | (cd <newdir> ; tar -xvfbBp - 1000)
     
     #
     #---reads and writes from: local disk to local disk (different
     directory). #
     cd <directory>
     tar -cvfbB - 1000 <filenames> | (cd <newdir> ; tar -xvfbBp - 1000) #
     #---reads and writes from: local disk to remote disk (different
     directory). #
     cd <directory>
     tar -cvfbB - 1000 <filenames> | rsh <remote-system> "(cd <newdir> ;tar
     -xvpBfb - 1000)"
     
     See tar(1) and dd(1). Also see bar(1).
     
     
     Mark Hargrave
     
     ------------------------------------------
     Mark Hargrave, Sr. Unix Systems Manager Lockheed Martin Manned Space
     Systems
     PO Box 29304 Mail Stop: 3414
     New Orleans, LA 70189
     
     Phone: 504-257-1242
     E-Mail: meh@wisdom.maf.nasa.gov
     ------------------------------------------
     
     
     
     Hi Toby,
     
     you can use commands like the following:
     
     find <files-to-copy> -depth -print | cpio -pdm <destination-dir>
     
     or, if needed remote:
     
     find <files-to-copy> -depth -print | cpio -o | rsh <desthost> 'cd
     <destination-dir> ; cpio -idm'
     
     Hope that helps
     
     Kind Regards - Jens Fischer
     
     I User : Jens Fischer
     Department : DV-Anwendungsentwicklung Technik
     I N A Company : INA Werk Schaeffler KG
     Address Industriestrasse 1-3
     A D 91074 - Herzogenaurach
     Phone : (+49)9132-823262
     FAX : (+49)9132-824953
     e-mail : fischjns@kat.ina.de
     
     
     
     you can do it either with dump or cpio. With cpio do it as follows
     find . -depth -print | cpio -pdmv newdir
     
     Notice you must be in the old directory when you run it and newdir
     must be there
     
     
     =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
     = Mike (Mehran) Salehi mrs@cadem.mc.xerox.com (716) 422-2725
     =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
     =
     
     
     
     Sure. Use tar (or "bar" or Gnu's tar, "tar") like this:
     
     (cd /sourcedir;tar cf - file1 file2 dir1 dir2) | (cd /targetdir; tar
     xpf -)
     
     The "p" flag also preserves permissions. You can add the "v" flag to
     either invocation of tar if you want to watch its progress. And
     obviously, if you're already in the sourcedir or targetdir, you don't
     need one of the "cd" commands.
     
     ---Rsk
     Rich Kulawiec
     rsk@itw.com



This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:11:42 CDT