ফোল্ডারগুলির জন্য সিপি - ব্যাকআপ = সংখ্যাযুক্ত


10

সংখ্যার প্রত্যয় সহ বিদ্যমান ফাইলগুলির ব্যাকআপ নিতে, আমি নিম্নলিখিতগুলি করতে পারি:

cp --backup=numbered afile /path/to/dest

আমি যখন কোনও ফোল্ডার দিয়ে একই করার চেষ্টা করি তখন এটি প্রযোজ্য না:

cp -R --backup=numbered afolder /path/to/dest

আমি কীভাবে এটি অর্জন করতে পারি?


আমি যা অর্জন করতে চাই তাতে আমার কিছুটা প্রদর্শন করা উচিত। প্রথমে আমাদের দুটি ডায়ার রয়েছে:

ls -ld source container
drwxrwxr-x 6 kaiyin kaiyin 4096 Nov 29 22:11 container
drwxrwxr-x 2 kaiyin kaiyin 4096 Nov 29 22:09 source

তারপরে আমরা এটি করি:

myPerfectCp -R --backup=numbered source container/
myPerfectCp -R --backup=numbered source container/
myPerfectCp -R --backup=numbered source container/
myPerfectCp -R --backup=numbered source container/

আদর্শভাবে আমি এই ফলাফলটি চাই:

tree container/
container/
├── source
├── source.~1~
├── source.~2~
└── source.~3~

কেবল একটি চিন্তা: " ব্যাকআপ " হিসাবে আমি ব্যাখ্যা করব : "* নির্দিষ্ট সময়ে ফাইলগুলির স্ন্যাপশট রাখা *"। ডিরেক্টরিগুলি নিজেরাই পরিবর্তিত হয় না - এটি তাদের সামগ্রীতে পরিবর্তন হয়। আমি আপনার প্রশ্ন বুঝতে: " পরপর সংখ্যাযুক্ত ডিরেক্টরিগুলি যে ফাইলের ব্যাকআপ ধারণ তৈরি করতে " -> একটি ডিরেক্টরী পালন পরিবর্তে backup.~1~, backup~2~ইত্যাদি যদি আপনি চান dir~1~ধারণকারী backup~1~, অনুসৃত dir~2~ধারণকারী backup~2~ইত্যাদি, এইভাবে একটি পৃথক ডিরেক্টরির মধ্যে রাজ্যের প্রতিটি পরিবর্তনে ট্র্যাকিং। এটা কী ঠিক?
এঞ্চল

উত্তর:


1

যদিও এটি ব্যাশে করা যেতে পারে, আমি আরও একটি অজগর লোক, সুতরাং এখানে আমার প্রস্তাবটি দেওয়া হয়েছে:

#!/usr/bin/env python
import glob
import os
import sys


def cpdir(source, target):
    if target.endswith('/'):
        if not os.path.isdir(target):
            print "Target directory doesn't exist: %s" % target
            sys.exit(1)
        target += source
    if '--backup=numbered' in sys.argv:
        dirs = glob.glob(target + '.~*~')
        if not dirs:
            num = 1
        else:
            num = max([int(dir.split('~')[-2]) for dir in dirs]) + 1
        target += '.~%s~' % num
    cmd = 'cp -a %s %s' % (source, target)
    #print cmd
    rv = os.system(cmd)
    sys.exit(rv)

def main():
    if len(sys.argv) < 3:
        print "Usage: %s [--backup=numbered] <source> <dest>" % sys.argv[0]
        sys.exit(1)
    source = sys.argv[1]
    target = sys.argv[2]
    return cpdir(source, target)

if __name__ == '__main__':
    sys.exit(main())

1

চেষ্টা করুন:

find source -type f -exec cp --backup=numbered -- {} container/ \;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.