rsync একটি .git সাব dir (- ফিল্টার) ধারণকারী একটি ফোল্ডার বাদে


2

আমি একাধিক ফোল্ডার ব্যাকআপ করতে চান। এই একাধিক ফোল্ডারে আমি সমস্ত ডিরেক্টরি বাদ দিতে চাই, যার মধ্যে রয়েছে .git সাব। সুতরাং উদাহরণস্বরূপ এই ফোল্ডার অনুক্রমের মধ্যে:

├── gitrepo        <-- exclude this completely
|   └── .git/...
│   └── file1
└── nogitrepo      <-- keep this
    └── file2

আমি ইতিমধ্যে সফলভাবে সব .git ডিরেক্টরি বাদ দিয়ে --exclude=.git, কিন্তু স্থানীয় রিপোজিটরির সমস্ত সামগ্রী রিমোট এসসিএমে ইতিমধ্যেই হতে পারে, তাই আমি তাদের ব্যাকআপে অন্তর্ভুক্ত করতে চাই না।

আমি সচেতন --filter rsync এর যুক্তি। আমি ম্যান পৃষ্ঠা দেখেছি কিন্তু আমি নিশ্চিত না যে এটি এই সমস্যার সমাধান করবে। তবে আমি আশাবাদী যে rsync পূর্বে ফাইল সহ সমস্ত ফাইল তালিকা একত্রিত করে।

সুতরাং, git repositories যে সমস্ত ফোল্ডার বাদ দিতে rsync এর সাথে এটি সম্ভব? প্রতি ডিরেক্টরি ডিরেক্টরি মত কিছু --filter?

উত্তর:


0

আপনার সেট আপ করুন SRC এবং DEST ভেরিয়েবল, উদাহরণস্বরূপ:

SRC="./"
DEST="../BACKUP/"

আপনি ভালো কিছু ব্যবহার করতে পারেন find সব সনাক্ত করতে .git ডিরেক্টরি:

find "${SRC}" -type d -name '.git'

এই অন্তর্ভুক্ত করা হবে ${SRC}/.git খুব যদিও (যা হয়ে যাবে ${SRC}, এবং এইভাবে অবশেষে উপেক্ষা " সব ") ... যে ব্যবহার এড়াতে -mindepth 2:

find "${SRC}" -mindepth 2 -type d -name '.git'

পিছনে বন্ধ পরবর্তী ফালা /.git উপাদান:

find "${SRC}" -mindepth 2 -type d -name '.git' \
    | sed -re 's!/.git$!!g'

যেমন rsync উৎস তার কাজ ডিরেক্টরি সেট করা হবে, আমরা প্রাথমিক ছাঁটাই করতে হবে ${SRC} ফলাফল থেকেও:

find "${SRC}" -mindepth 2 -type d -name '.git' \
    | sed -re 's!^'"${SRC}"'!!g;s!/.git$!!g'

অবশেষে, এই সঙ্গে যোগ দিন rsync কমান্ড ব্যবহার করে --exclude-from, পাস - (I.e: stdin ):

find "${SRC}" -mindepth 2 -type d -name '.git' \
    | sed -re 's!^'"${SRC}"'!!g;s!/.git$!!g' \
    | rsync -av --exclude-from - "${SRC}" "${DEST}"/

বিঃদ্রঃ: এই নিতে হবে না কোন untracked / সংশোধিত ফাইল।


0

find your_DIR_for_BACKUP -name .git | sed 's/\/.git//g' > ~/exclude_repos

এবং rsync --exclude-from বিকল্পের সাথে চালান, ভরাট ফাইলটি নির্বাচন করুন ~ / exclude_repos

rsync --exclude-from ~/exclude_repos your_DIR_for_BACKUP_SRC DST


সবচেয়ে সহজবোধ্য উত্তর, কিন্তু খুব সমাধান! সম্পূর্ণতা অনুরোধের জন্য শুধুমাত্র যোগ করতে পারেন -d ডিরেক্টরি পতাকা find
0x00F
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.