'리눅스명령어프로그램'에 해당되는 글 1건

  1. 2018.02.01 리눅스 복사 프로그램(쉘스크립트)만들기
2018. 2. 1. 12:12

폴더를 다른 폴더로 백업 받아 놓으려고 하는데, 폴더별로, 어느정도 작업이 되고 있는지 보고 싶은데,


이게 용량이 몇테라씩 하다보니까, 하나끝내고 하나 끝내는거 


보고 있기가 너무 빡세서, 


그냥 쉘 스크립트로 만들었다.


먼저 


test, test2, test3 폴더 3개를  test_copied 폴더로 복사할꺼다.


$> cp -rv --preserve=timestamps /volume1/shared/test/test /volume1/shared/test/test_copied


$> cp [옵션]  [원본위치]  [복사될위치]


-r 은 하위폴더 포함이고,

-v 는 보기 좋게 나오는거고,

--perserve=simestamps 는 원본에 있는 생성 시간은 유지하고 복사하는거다.



먼저 복사를 원하는데 가서,



$ vi test.sh


를 쳐서 에디터로 들어간다.


/volume1/shared/test/test폴더를  /volume1/shared/test/test_copied 폴더로 복사할것이다.


i를 눌러서 편집 입력 모드로 만들고,


아래처럼 쓴다.


cp -rv --preserve=timestamps /volume1/shared/test/test /volume1/shared/test/test_copied

echo "Finish test1" >> cp_log.txt

cp -rv --preserve=timestamps /volume1/shared/test/test2 /volume1/shared/test/test_copied

echo "Finish test2" >> cp_log.txt

cp -rv --preserve=timestamps /volume1/shared/test/test3 /volume1/shared/test/test_copied

echo "Finish test3" >> cp_log.txt





먼저 test폳더 복사후 cp_log.txt에 "Finish Test1"이란 로그를 남겨 놓는다.

그다음에 test2폴더를 복사후 로그를 남기고, test3도 마찮가지이다.


$> echo "Finish test1" >> cp_log.txt


여기에서 echo는 문자 출력이고, >>는 cp_log.txt파일에 추가하라는 이야기다.( '>' 두개임)


여기에서 > 를 한번만 쓰면, 이전꺼는 지우고, 마지막 문자만 들어간다.



작성후, 'ESC'를 눌르고,   :wq 를 입력후 나온다.


그다음에 copy.sh를 실행하는 방법은 아래 3가지 방법이 있다.


$ ./copy.sh


$ sh copy.sh


$ bash copy.sh

난 개인적으로 ./copy.sh로 실행을 했다.


실행을 하면 권한이 없다는 말이 나올것이다.


그러면 아래와 같이 권한을 준다.


$ chmod 700 copy.sh

를 친다.



그다음에 다시



$ ./copy.sh

를 실행한다.


백그라운드로 작업하고 싶으면, 


$ ./copy.sh &

백그라운드 관련 포스터  http://tyson.tistory.com/88



하면 실행될 것이고 끝나면,


$ cat cp_log.txt

를 하면 어디까지 복사 됬는지 볼 수 있다.

Posted by Tyson