언젠가 써 먹을지도 모르는 Unix 팁 문제?

jachin의 이미지

대학교 때, IBM RS/6000, AIX 4.3.1 으로 학과 서버 운영을 맡았던 때가 있었습니다.

그 땐 보안 개념도 희박했던 때라 관리자 비번을 몇 명에게 알려줬는데,

실수로 누군가 /bin/cp 명령을 지워버렸습니다.

여러분들은 cp 명령없이 어떻게 cp 명령을 수행하시겠습니까?

제한사항으로 AIX OS 패키지 CD는 없었고, 네트워크는 사용 가능한 상태였습니다.

kukyakya의 이미지

cat file > dest_file 이면 되지 않을까요?

jachin의 이미지

하지만 저만 cp 명령을 못 쓰던게 아니니까요. ^^

저는 그 방법으로 복사했지만,

그 후에 진짜 cp 명령을 만들어야 했어요...

무서웠던 것은 그 때 당시 컴파일러가 없었어요. TㅁT

kkb110의 이미지

혹시 "cat file > dest_file 을 하는 스크립트"를 짜서

echo 스크립트 > cp

하셨나요?

jachin의 이미지

하지만, cp 의 모든 기능을 스크립트로 구현하는 것은 정말 힘들죠. :)

만약 cp * some-directory/ 라고 한다면???

ymir의 이미지

tar 나 cpio 도 도움이 될 것 같네요.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

jachin의 이미지

CPIO를 이용해서 바로 만들어서 썼을지도 모르겠어요. ^^

디렉터리 복사와 파일 복사를 모두 하기 위해서는 tar 와 cpio 를 이용한 방법이 제일 심플했는데 말이죠.

kkb110의 이미지

문제를 잘못 읽었네요 ㅋㅋ

jachin의 이미지

지금도 있을지 모르겠지만...

http://www.bullfreeware.com 에서 필요한 소프트웨어를 다운로드 받을 수 있었죠. :)

제일 심플한 방법 중 하나였는데, 그 사이트를 알아내기까지는 꽤 오랜 시간이 흘렀었죠.

jachin의 이미지

AIX 4.3.1 따위는 이젠 지원하지 않는가보네요. 없어요... ||orz

PPC 1세대 32bit CPU 여서 e603 이었던가, 그랬는데...

이젠 아키텍쳐도 드물어졌지만, AIX 4.3.1 커널 시스템 API 에 맞는 패키지란 없을지도...

kkb110의 이미지

수정했는데 답글이달렸네요 ^^;
원래 글은 "ftp나 wget으로 cp를 받아오자" 였습니다.

jachin의 이미지

그 땐 플랫폼 개념이 희박하던 때라...

Ultra Sparc Sun OS 에서 cp 명령을 받아다가 붙여놓고 실행하려 했다는거...

isty2e의 이미지

#!/usr/bin/python
import os

if len(sys.argv)<3:
print "Usage: cp [source] [destination]\n"
exit()

os.system("cat "+sys.argv[1]+" > "+sys.argv[2])

네요. 그리고 제대로 된 해결책을 찾아 떠나기...

cedar의 이미지

#!/usr/bin/env python
import os
import sys
import shutil
 
try:
    source = sys.argv[1] 
    destination = sys.argv[2]
except IndexError:
    print "Usage: cp.py [source] [destination]"
    sys.exit()
 
try:
    shutil.copy2(source, destination)
except (IOError, os.error):
    print "File cannot be copied."

그리고 보다 pythonic 하게 하려면 if 문(LBYL)보다는 try ... except(EAFP)를 쓰세요.

jachin의 이미지

그 때 Python 이라도 있었다면...

거의 뭐... 반칙 아니었을까 싶어요. ㅇㅅㅇ;;;

cedar의 이미지

#!/usr/bin/env perl
use File::Copy;
 
$ARGC = @ARGV;
if ($ARGC < 2) {
  print "Usage: cp.pl [source] [destination]\n";
  exit $ARGC;
}
 
$filetobecopied = @ARGV[0];
$newfile = @ARGV[1];
copy($filetobecopied, $newfile) or die "File cannot be copied.";
jachin의 이미지

저도 perl로 했다능... ㅇㅅㅇ;;;

ddoman의 이미지

$ man dd

NAME
dd - convert and copy a file

.....

를 이용하여 cp명령과 동일한 interface를 가지는 스크립트를 짤 것 같습니다.

JuEUS-U의 이미지

http://unixhelp.ed.ac.uk/CGI/man-cgi?cp

무립니다. ㅇ>-<

랄까, 생각보다 많이 복잡하군요

bus710의 이미지

통신보안~
자병장님 보급관님이 찾으시지 말입니다~
당장 aix 복구 해놓으라지 말입니다~

life is only one time

jachin의 이미지

도망 =3 =33

Daiquiri의 이미지

그래도 rm -rf / bin/bash보다는 훨씬 낫네요...

freestyle의 이미지

그나마 가장 비슷하지 않나요?

----------------------------------------------------------------------------------------
Don't Feed the Trolls!
----------------------------------------------------------------------------------------

sangwoo의 이미지

gnu나 BSD에서 소스를 가져와서 컴파일하는 게 가장 빠를지도 모르겠네요.

----
Let's shut up and code.