7
def __init__(self,src_folder,dst_folder):
8
self.src_folder = src_folder
9
self.dst_folder = dst_folder
12
dest_dir = os.path.basename(self.src_folder.rstrip("/"))
13
self.dst_folder = os.path.join(self.dst_folder,dest_dir)
14
os.mkdir(self.dst_folder)
15
self.dd(self.src_folder,self.dst_folder)
17
def dd_file(self,src_file):
18
path = src_file.split(self.src_folder)[1]
19
path = path.startswith("/") and path[1:] or path
20
dst_file = os.path.join(self.dst_folder,path)
21
subprocess.call(["dd","conv=noerror","if="+src_file,"of="+dst_file])
23
def dd(self,src_folder,dst_folder):
24
in_files = dircache.listdir(src_folder)
25
for src_file in in_files:
26
full_path = os.path.join(src_folder,src_file)
27
if os.path.isdir(full_path):
28
dest_path = os.path.join(dst_folder,full_path.split(self.src_folder)[1])
30
self.dd(full_path,dest_path)
32
self.dd_file(full_path)
35
print "usage : %s source_dir dest_dir" % sys.argv[0]
38
if len(sys.argv) != 3 :
41
for special in ('.','..'):
42
for i in xrange(1,len(sys.argv)):
43
if sys.argv[i] == special :
44
sys.argv[i] = os.path.abspath(special)
49
if not all(os.path.isdir(x) for x in (src,dst)):
50
print "one of the arguments is not a directory"
57
if __name__ == "__main__":