Sponsored Content
Top Forums Shell Programming and Scripting Move directory recursive and leave symlinks at source Post 303009424 by rbatte1 on Thursday 14th of December 2017 09:15:03 AM
Old 12-14-2017
Can you tell us a bit more about why you ned to do this? Is it a space issue or are you moving from using one SAN to another perhaps? That might colour our thinking rather than us guessing and giving (perhaps wildly inaccurate) guesses about what is best.

If it is read-only, then you would be better to copy the data to the new location. Then at an agreed time you can rename the top level directory and create the symbolic link. There will be the time between the rename and the creation of the link that things might not work but that should be a pretty small interval.

Perhaps an option (as root):
Code:
cd /original
tar -cvf - . | (cd /target ; tar -xvpf - )                 # Will run for quite a while

# When you are ready to switch
mv /original /original.old ; ln -s /target /original       # Rename the original and almost immediately create the link

When you are happy, remove /original.old but have a search through to make sure that there are no symbolic links inside it that a find ..... or rm -rf might follow. Take extra care at this point.



If you are moving SAN and assuming you have a volume manager, I would recommend that you attach the new LUNs and add them in to the old volume group. Then you can use the volume manager to firstly mirror the logical volumes then remove the old ones. You could use a volume manager to move the logical volume but if they are large I would always recommend a mirror and delete. It takes a little longer but you have less to worry about if there is an interruption. At worst you might have to drop the partial new copy and start again.


Like I suggested, very different options depending on what you are trying to achieve. Can you also confirm your OS and version with the output from uname -a (pasted in CODE tags) so we use the correct tools.

You also might have to consider SE-Linux, other security packages and Access Control Lists. Do you know if you have any of those?



I hope that this helps or we can continue the discussion.


Robin
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

non recursive search in the current directory only

Hi, Am trying for a script which should delete more than 15 days older files in my current directory.Am using the below piece of code: "find /tmp -type f -name "pattern" -mtime +15 -exec /usr/bin/ls -altr {} \;" "find /tmp -type f -name "pattern" -mtime +15 -exec /usr/bin/rm -f {} \;" ... (9 Replies)
Discussion started by: puppala
9 Replies

2. Programming

recursive copy of the directory

I want to copy a directory recursively ( it again has directories) and the directory is on windows and is nfsmounted in vxWorks, i am using unix to develop the code for this, can any one suggest me how to copy the directories recursively. (7 Replies)
Discussion started by: deepthi.s
7 Replies

3. Programming

Recursive remove directory.

What is the best way to completely remove dir with it's content ??? rmdir deletes only EMPTY dirs as i know. The man page of remove function says "remove() deletes a name from the file system." Can it remove any dir recursively ??? :rolleyes: (7 Replies)
Discussion started by: Trump
7 Replies

4. UNIX for Dummies Questions & Answers

recursive wc on a directory?

Hi all, I need to count the number of lines in all the files under a directory (several levels deep). I am feeling extremely dumb, but I don't know how to do that. Needless to say, I am not a shell script wiz... Any advice? thanks in advance! (13 Replies)
Discussion started by: bimba17
13 Replies

5. Shell Programming and Scripting

Move all files from source to destination directory based on the filename

Move all files starting with a specific name to different directory. This shell script program should have three parameters File Name Source Directory Destination Directory User should be able to enter ‘AB_CD*' in file name parameter. In this case all the files starting with AB_CD will... (1 Reply)
Discussion started by: chetancrsp18
1 Replies

6. Shell Programming and Scripting

Rsync move with symlinks

Hi, I use rsync to move from source to target, but there are cases that I need to exclude: Suppose in my file system, I have a soft link ~/data -> /media/volgrp/data. Under data folder, there is a file hello.txt. After moving command "rsync --remove-source-files -aH --force ~/data/... (3 Replies)
Discussion started by: huangyingw
3 Replies

7. Shell Programming and Scripting

List files with date, create directory, move to the created directory

Hi all, i have a folder, with tons of files containing as following, on /my/folder/jobs/ some_name_2016-01-17-22-38-58_some name_0_0.zip.done some_name_2016-01-17-22-40-30_some name_0_0.zip.done some_name_2016-01-17-22-48-50_some name_0_0.zip.done and these can be lots of similar files,... (6 Replies)
Discussion started by: charli1
6 Replies

8. UNIX for Dummies Questions & Answers

How to move gz files from one source directory to destination directory?

Hi All, Daily i am doing the house keeping in one of my server and manually moving the files which were older than 90 days and moving to destination folder. using the find command . Could you please assist me how to put the automation using the shell script . ... (11 Replies)
Discussion started by: venkat918
11 Replies

9. Shell Programming and Scripting

Shell script cannot create directory and move the file to that directory

I have a script, which is checking if file exists and move it to another directory if then mkdir -p ${LOCL_FILES_DIR}/cool_${Today}/monthly mv report_manual_alloc_rpt_A_I_ASSIGNMENT.${Today}*.csv ${LOCL_FILES_DIR}/cool_${Today}/monthly ... (9 Replies)
Discussion started by: digioleg54
9 Replies

10. UNIX for Beginners Questions & Answers

Move directory with rsync and delete from source

I need a rsync command which will exclude certain files and directories from source and copy the rest. I got this command working, sudo rsync -avzh --exclude 'bin' --exclude 'braintree' --exclude 'colinmollenhour' --exclude 'composer' --exclude 'doctrine' --exclude 'fabpot' --exclude... (2 Replies)
Discussion started by: Siddheshk
2 Replies
SYMLINKS(1)						      General Commands Manual						       SYMLINKS(1)

NAME
symlinks - symbolic link maintenance utility SYNOPSIS
symlinks [ -cdorstv ] dirlist DESCRIPTION
symlinks is a useful utility for maintainers of FTP sites, CDROMs, and Linux software distributions. It scans directories for symbolic links and lists them on stdout, often revealing flaws in the filesystem tree. Each link is output with a classification of relative, absolute, dangling, messy, lengthy, or other_fs. relative links are those expressed as paths relative to the directory in which the links reside, usually independent of the mount point of the filesystem. absolute links are those given as an absolute path from the root directory as indicated by a leading slash (/). dangling links are those for which the target of the link does not currently exist. This commonly occurs for absolute links when a filesystem is mounted at other than its customary mount point (such as when the normal root filesystem is mounted at /mnt after booting from alternative media). messy links are links which contain unnecessary slashes or dots in the path. These are cleaned up as well when -c is specified. lengthy links are links which use "../" more than necessary in the path (eg. /bin/vi -> ../bin/vim) These are only detected when -s is specified, and are only cleaned up when -c is also specified. other_fs are those links whose target currently resides on a different filesystem from where symlinks was run (most useful with -r ). OPTIONS
-c convert absolute links (within the same filesystem) to relative links. This permits links to maintain their validity regardless of the mount point used for the filesystem -- a desirable setup in most cases. This option also causes any messy links to be cleaned up, and, if -s was also specified, then lengthy links are also shortened. Links affected by -c are prefixed with changed in the output. -d causes dangling links to be removed. -o fix links on other filesystems encountered while recursing. Normally, other filesystems encountered are not modified by symlinks. -r recursively operate on subdirectories within the same filesystem. -s causes lengthy links to be detected. -t is used to test for what symlinks would do if -c were specified, but without really changing anything. -v show all symbolic links. By default, relative links are not shown unless -v is specified. BUGS
symlinks does not recurse or change links across filesystems. AUTHOR
symlinks has been written by Mark Lord <mlord@pobox.com>, the original developer and maintainer of the IDE Performance Package for linux, the Linux IDE Driver subsystem, hdparm, and a current day libata hacker. SEE ALSO
symlink(2) Version 1.4 October 2008 SYMLINKS(1)
All times are GMT -4. The time now is 08:08 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy