ইম্যাকস ব্যাকআপ ফাইলগুলি কীভাবে তৈরি করে তা আমি কীভাবে নিয়ন্ত্রণ করব?


326

ইমাকস ব্যাকআপ ফাইলগুলিকে foo~সর্বত্র নাম রাখে এবং সেগুলি মুছে ফেলার কথা মনে রাখতে পছন্দ করি না। এছাড়াও, আমি যদি এমন কোনও ফাইল সম্পাদনা করি যা ফাইল সিস্টেমে অন্য কোথাও একটি শক্ত লিঙ্কযুক্ত থাকে, হার্ড লিঙ্কটি ব্যাকআপের দিকে ইঙ্গিত করে যখন আমি সম্পাদনা করে যাচ্ছি এবং তা বিভ্রান্তিকর এবং ভয়াবহ। আমি কীভাবে এই ব্যাকআপ ফাইলগুলি মুছে ফেলতে পারি, বা সেগুলি একই ডিরেক্টরি বাদে অন্য কোথাও যেতে পারি?

উত্তর:


518

আপনি যদি কখনও ইমাস ব্যাকআপ ফাইল দ্বারা সংরক্ষণ করে থাকেন তবে আপনি সম্ভবত সেগুলির বেশি চান, সেগুলির চেয়ে কম নয়। এটি বিরক্তিকর যে আপনি যে ফাইলটি সম্পাদনা করছেন সেই একই ডিরেক্টরিতে যান তবে এটি পরিবর্তন করা সহজ। আপনি নিজের মধ্যে নীচের মতো কিছু রেখে সমস্ত ব্যাকআপ ফাইল ডিরেক্টরিতে যেতে পারেন .emacs

(setq backup-directory-alist `(("." . "~/.saves")))

ইমাকগুলি কীভাবে আপনার ব্যাকআপ ফাইলগুলি তৈরি করতে পারে তার সাথে সম্পর্কিত রয়েছে বেশ কয়েকটি আরকেইন বিশদ। এটি কি আসলটির নাম পরিবর্তন করে সম্পাদিত বাফারটি লিখতে হবে? যদি মূলটি যুক্ত হয় তবে কী হবে? সাধারণভাবে, সবচেয়ে নিরাপদ তবে ধীরতম বাজি হ'ল সর্বদা অনুলিপি করে ব্যাকআপ নেওয়া।

(setq backup-by-copying t)

যদি কোনও কারণে এটি খুব ধীর হয় তবে আপনার এটিও একবার নজর দিতে পারে backup-by-copying-when-linked

যেহেতু এখন আপনার ব্যাকআপগুলি সমস্ত নিজের জায়গায় রয়েছে তাই আপনি সেগুলির চেয়ে কম পরিমাণে চেয়ে বেশি কিছু পেতে পারেন। এই ভেরিয়েবলগুলির (সহ C-h v) জন্য ইমাস ডকুমেন্টেশনটি দেখুন ।

(setq delete-old-versions t
  kept-new-versions 6
  kept-old-versions 2
  version-control t)

অবশেষে, যদি আপনার অবশ্যই কোনও ব্যাকআপ ফাইল না থাকে:

(setq make-backup-files nil)

এটি যদিও আমাকে ভাবতে অসুস্থ করে তোলে।


6
আরে তবে এটি এই জাতীয় নামের সাথে ব্যাকআপ তৈরি করছে! হোম! স্ব্রাদমিন! foo ~ এবং আমি ফাইলটি খুলতে পারি না
জাইমে হাবলুটজেল

33
ব্যাকআপ কেন ব্যবহার করবেন? গিট / পার্ক ব্যবহার করবেন না কেন? ভাল সংস্করণ নিয়ন্ত্রণ ব্যবস্থা এবং প্রোগ্রামিং পদ্ধতিগুলি সম্পাদকের দ্বারা পৃথক ফাইল ব্যাকআপের ট্রাম্প করা উচিত
ভোলআরন

52
@ ভোলআরন: আপনি যখন সংস্করণ নিয়ন্ত্রণের অধীনে না এমন কোনও কিছু সম্পাদনা করছেন তখন ব্যাকআপগুলি হ'ল - কোনও কনফিগার ফাইল বা দ্রুত এবং নোংরা এমন কিছু যা আপনি এখনও সংস্করণ নিয়ন্ত্রণে আনতে পারেননি। তারপরে, যখন আপনি যা করা উচিত তা করেন না, সম্পাদক আপনার ঘাড়ে সংরক্ষণ করে।
এপোনামস

69
@ ভোলআরন - এটি ঠিক ভুল। আপনি রাখতে চান না এমন পুনর্বিবেচনা নিয়ন্ত্রণে ক্রেপ লাগানো উচিত নয়। এটি কেবল গুরুত্বপূর্ণ জিনিসগুলি সন্ধান করা আরও শক্ত করে তোলে। পরিবর্তে, আপনার সম্পাদকের ব্যাকআপগুলি তাদের জন্য কী ভাল (জরুরি অবস্থার পরিবর্তনে ব্যাক আপ নেওয়া) এবং সংশোধন নিয়ন্ত্রণ এটির জন্য কী উপযুক্ত (আপনার সফ্টওয়্যারটির গুরুত্বপূর্ণ সংস্করণ রাখা এবং দলীয় বিকাশের সুবিধার্থে করা) তার জন্য পুনর্বিবেচনা নিয়ন্ত্রণ ব্যবহার করুন। কাজের জন্য সঠিক টুল ব্যবহার করুন।
টেড

26
"ব্যাকআপ ফাইলগুলি এত বেশি ওভারহেড যুক্ত করে এবং প্রায় কোনও মূল্যই দেয় না": তা কি রায় নয়?
দুর্ভাগ্য পরিবর্তনশীল

70

ইমাস ব্যাকআপ / অটো-সেভ ফাইলগুলি খুব সহায়ক হতে পারে। তবে এই বৈশিষ্ট্যগুলি বিভ্রান্তিকর।

ব্যাকআপ ফাইল

ব্যাকআপ ফাইলগুলির শেষে টিল্ডস ( ~বা ~9~) থাকে এবং এটি ব্যবহারকারী হোম ডিরেক্টরিতে লেখা হবে। যখন make-backup-filesনন-নিল ইমাকগুলি স্বয়ংক্রিয়ভাবে প্রথম বারের বাফার থেকে ফাইলটি সংরক্ষণ করা হয় তখন মূল ফাইলটির একটি ব্যাকআপ তৈরি করে। আপনি যদি কোনও নতুন ফাইল সম্পাদনা করছেন তবে দ্বিতীয়বার ফাইলটি সংরক্ষণ করার পরে ইম্যাকস একটি ব্যাকআপ তৈরি করবে।

আপনি ফাইলটি কতবার সংরক্ষণ করেন তা ব্যাকআপ অপরিবর্তিত থাকে। আপনি যদি বাফারটি মেরে ফেলে থাকেন এবং ফাইলটি আবার দেখতে যান, বা পরের বার আপনি যখন একটি নতুন ইমাস সেশন শুরু করবেন, একটি নতুন ব্যাকআপ ফাইল তৈরি করা হবে। নতুন ব্যাকআপটি পুনরায় খোলার পরে বা সম্পাদনা সেশনের শুরুতে ফাইলটির সামগ্রী প্রতিফলিত করে। কিন্তু একটি বিদ্যমান ব্যাকআপ আবার কখনও স্পর্শ করা হয় না। সুতরাং আমি সংখ্যাযুক্ত ব্যাকআপ তৈরি করতে দরকারী মনে করি (নীচের কনফিগারেশনটি দেখুন)।

ব্যাকআপগুলি তৈরি করতে প্রিফিক্স আর্গুমেন্টের সাথে স্পষ্টভাবে ব্যবহার করুন save-buffer( C-x C-s)।

diff-backupএবং dired-diff-backupকোনও ফাইলকে এর ব্যাকআপ বা বিপরীত সাথে তুলনা করে। তবে ব্যাকআপ ফাইলগুলি পুনরুদ্ধার করার জন্য কোনও কার্যকারিতা নেই। উদাহরণস্বরূপ, উইন্ডোজ অধীনে, একটি ব্যাকআপ ফাইল পুনরুদ্ধার করতে

C:\Users\USERNAME\.emacs.d\backups\!drive_c!Users!USERNAME!.emacs.el.~7~

এটি ম্যানুয়ালি হিসাবে অনুলিপি করতে হবে

C:\Users\USERNAME\.emacs.el

ফাইলগুলি অটো-সেভ করুন

অটো-সেভ ফাইলগুলি হ্যাশমার্কগুলি ( #) ব্যবহার করে এবং স্থানীয়ভাবে প্রকল্প ডিরেক্টরিতে (আসল ফাইলগুলি সহ) লেখা হবে। কারণটি হ'ল অটো-সেভ ফাইলগুলি কেবলমাত্র অস্থায়ী ফাইল যা কোনও ফাইল পুনরায় সংরক্ষণ না হওয়া অবধি ইমাকগুলি তৈরি করে (তাড়াতাড়ি আনুগত্যের সাথে)।

  • ব্যবহারকারীর কোনও ফাইল সংরক্ষণ করার জন্য C-x C-s( save-buffer) চাপ দেওয়ার আগে ইমাস্যাক্স ফাইলগুলি স্বতঃ-সংরক্ষণ করে - কীস্ট্রোকগুলি গণনা ( auto-save-interval) এর উপর ভিত্তি করে বা আপনি যখন টাইপ করা বন্ধ করেন ( auto-save-timeout)।
  • ইমাকগুলি শেল কমান্ডের সাহায্যে ইমাস জব হত্যা সহ যখনই ক্রাশ হয় তখন স্বয়ংক্রিয়ভাবে সেভ করে।

যখন ব্যবহারকারী ফাইলটি সংরক্ষণ করেন, স্বয়ংক্রিয়ভাবে সংরক্ষিত সংস্করণটি মুছে ফেলা হয়। কিন্তু যখন ব্যবহারকারী ফাইলটি সংরক্ষণ না করেই প্রস্থান করে, ইমাসস বা এক্স সেশন ক্রাশ হয়ে যায়, তখন স্বয়ংক্রিয়-সংরক্ষিত ফাইলগুলি উপস্থিত থাকে।

অটো-সেভ ফাইলগুলি ব্যবহার করুন revert-bufferবা recover-fileপুনরুদ্ধার করুন । নোট করুন E / .emacs.d / স্বতঃ-সংরক্ষণ-তালিকার নামের ফাইলগুলিতে পরে পুনরুদ্ধারের জন্য ইমাস্যাকগুলি বাধাপ্রাপ্ত সেশনগুলি রেকর্ড করে । recover-sessionফাংশন এই তথ্য ব্যবহার করবে।

স্বতঃ-সংরক্ষিত ফাইল থেকে পুনরুদ্ধার করার জন্য পছন্দসই পদ্ধতিটি হ'ল M-x revert-buffer RET। ইমাসগুলি জিজ্ঞাসা করবে "সম্প্রতি বাফারটি স্বয়ংক্রিয়ভাবে সংরক্ষিত হয়েছে auto অটো-সেভ ফাইল থেকে প্রত্যাবর্তন করবেন?" বা "ফাইল থেকে বাফার ফাইলটি ফিরিয়ে দিন?" পরবর্তী ক্ষেত্রে কোনও অটো-সেভ ফাইল নেই। উদাহরণস্বরূপ, কারণ আপনি অন্য auto-save-intervallকী-স্ট্রোক টাইপ করার আগে সংরক্ষণ করেছেন , সেই ক্ষেত্রে ইমাকস স্বয়ংক্রিয় সংরক্ষণ ফাইলটি মুছে ফেলেছিল।

অটো-সেভ আজকাল ডিফল্ট হিসাবে অক্ষম করা হয় কারণ ধীর মেশিনের সাথে সংযুক্ত থাকাকালীন এটি সম্পাদনাটি ধীর করতে পারে এবং অনেকগুলি সংবেদনশীল ডেটা থাকার কারণে because

কনফিগারেশন

এখানে একটি কনফিগারেশন রয়েছে যা আইএমএইচও সবচেয়ে ভাল কাজ করে:

(defvar --backup-directory (concat user-emacs-directory "backups"))
(if (not (file-exists-p --backup-directory))
        (make-directory --backup-directory t))
(setq backup-directory-alist `(("." . ,--backup-directory)))
(setq make-backup-files t               ; backup of a file the first time it is saved.
      backup-by-copying t               ; don't clobber symlinks
      version-control t                 ; version numbers for backup files
      delete-old-versions t             ; delete excess backup files silently
      delete-by-moving-to-trash t
      kept-old-versions 6               ; oldest versions to keep when a new numbered backup is made (default: 2)
      kept-new-versions 9               ; newest versions to keep when a new numbered backup is made (default: 2)
      auto-save-default t               ; auto-save every buffer that visits a file
      auto-save-timeout 20              ; number of seconds idle time before auto-save (default: 30)
      auto-save-interval 200            ; number of keystrokes between auto-saves (default: 300)
      )

সংবেদনশীল তথ্য

আর একটি সমস্যা হ'ল আপনি সংবেদনশীল ডেটা সহ ইমাক্স ফাইলগুলির অনুলিপিগুলি রাখতে চান না। প্রতি-ফাইলের ভিত্তিতে এই মোডটি ব্যবহার করুন । এটি যেহেতু একটি ছোটখাটো মোড, তাই আমার উদ্দেশ্যগুলির জন্য আমি এটির নামকরণ করেছি sensitive-minor-mode

এটি সমস্ত .vcf এবং .gpg ফাইলগুলির জন্য সক্ষম করতে আপনার .emacs এ এমন কিছু ব্যবহার করুন:

(setq auto-mode-alist
      (append
       (list
        '("\\.\\(vcf\\|gpg\\)$" . sensitive-minor-mode)
        )
       auto-mode-alist))

বিকল্পভাবে, কিছু .txt ফাইলের মতো কেবল কিছু ফাইলকে সুরক্ষিত করতে লাইনের মতো একটি লাইন ব্যবহার করুন

// -*-mode:asciidoc; mode:sensitive-minor; fill-column:132-*-

ফাইলের মধ্যে


তাহলে আপনি অটোসোভ ব্যবহার করবেন না? এই সেটিংসের সাহায্যে আপনি আপনার ফোল্ডারে সেইসব বাজে # ফাইলনাম.টেক্স # ফাইলগুলি দেখতে এড়াতে পারবেন?
পাসক্যালভিকুটেন

3
সংবেদনশীল ডেটাযুক্ত ফাইল বাদে আমি সর্বদা ডিফল্টরূপে অটোসেভ এবং ব্যাকআপ ফাইলগুলি ব্যবহার করি। সংবেদনশীল মোড স্বয়ং সংরক্ষণ এবং ব্যাকআপগুলি অক্ষম করে। বিটিডাব্লু, # ফাইল.সেক্সট # ফাইলগুলি আসলেই বাজে নয়, কারণ ইমাসগুলি এগুলি প্রয়োজনীয় হিসাবে তাদের তৈরি করে এবং মুছে দেয়। যদি তারা থাকে তবে ইমাকগুলি এখনও চলছে, বা তারা ক্র্যাশড ইম্যাক্স থেকে প্রাপ্ত একটি শিল্পকর্ম। উভয় ক্ষেত্রেই তারা দিনটি বাঁচাতে পারে ;-)
আন্দ্রেস স্পিন্ডার

আহ, অতিরিক্ত তথ্য জন্য ধন্যবাদ। তাদের সাথে আমার বেশিরভাগ ইতিবাচক অভিজ্ঞতা আছে (তারা আমার দিনটি বাঁচিয়েছিল)। কেবল যখন আপনি কদর্যতা খুঁজছেন, ঠিক তখনই আপনি এটি পেয়ে
গেছেন

বিটিডাব্লু ব্যাকআপ তৈরি করা একটি জিনিস এবং ব্যাকআপগুলি পুনরুদ্ধার করা আলাদা জিনিস। সুতরাং অটো-সেভ দিয়ে খেলুন। Emacs কাজ বা ssh অধিবেশন হত্যা। যদি কোনও অটো-সেভ ফাইল থাকে diffতবে এটি আসল ফাইল সহ। তারপরে ইমাকগুলিকে ফায়ার করুন এবং নিজের দ্বারা অনুসন্ধান করুন কী revert-bufferকরে। এটি জরুরি পরিস্থিতিতে দ্রুত পরিশোধ করতে হবে।
Andreas Spindler

সংবেদনশীল-মোড দুর্দান্ত কাজ করে। ধন্যবাদ। দয়া করে নোট করুন যে আপনার পোস্টে আপনি এটি সংবেদনশীল-মাইনর-মোড বলছেন যেখানে সংজ্ঞা (লিঙ্ক) এ একে সংবেদনশীল-মোড বলে। হতে পারে আপনি এটি সারিবদ্ধ করতে চান।
হেইমান

65

গৃহীত উত্তর ভাল জিনিস, কিন্তু এটা ব্যাপকভাবে অতিরিক্ত দ্বারা উন্নত করা যায় উপর ব্যাক আপ যে সংরক্ষণ এবং ব্যাক আপ versioned ফাইল

প্রথম, গৃহীত উত্তরে বর্ণিত মৌলিক সেটিংস :

(setq version-control t     ;; Use version numbers for backups.
      kept-new-versions 10  ;; Number of newest versions to keep.
      kept-old-versions 0   ;; Number of oldest versions to keep.
      delete-old-versions t ;; Don't ask to delete excess backup versions.
      backup-by-copying t)  ;; Copy all files, don't rename them.

এরপরে, সংস্করণযুক্ত ফাইলগুলিও ব্যাকআপ নেবে, যা ইমাকগুলি ডিফল্টরূপে করে না (আপনি প্রতিটি সংরক্ষণের প্রতিশ্রুতি দেন না, তাই না?):

(setq vc-make-backup-files t)

অবশেষে, প্রথমটি নয়, প্রতিটি সংরক্ষণে একটি ব্যাকআপ তৈরি করুন। আমরা দুই ধরণের ব্যাকআপ করি:

  1. প্রতি সেশনের ব্যাকআপ: একবারে প্রতিটি ইমাস সেশনে বাফারের প্রথম সেভ করে। এগুলি ইমাকের ডিফল্ট ব্যাকআপ আচরণ অনুকরণ করে।

  2. প্রতি-সংরক্ষণ ব্যাকআপ: প্রতি সেভ একবার । ইমাসগুলি ডিফল্টরূপে এটি করে না, তবে আপনি যদি দীর্ঘকাল ইম্যাকগুলি চালনা ছেড়ে যান তবে এটি খুব কার্যকর।

ব্যাকআপ বিভিন্ন জায়গায় যেতে এবং টিপে, Emacs ব্যাকআপ dirs স্বয়ংক্রিয়ভাবে তৈরি করে থাকলে সেগুলি না:

;; Default and per-save backups go here:
(setq backup-directory-alist '(("" . "~/.emacs.d/backup/per-save")))

(defun force-backup-of-buffer ()
  ;; Make a special "per session" backup at the first save of each
  ;; emacs session.
  (when (not buffer-backed-up)
    ;; Override the default parameters for per-session backups.
    (let ((backup-directory-alist '(("" . "~/.emacs.d/backup/per-session")))
          (kept-new-versions 3))
      (backup-buffer)))
  ;; Make a "per save" backup on each save.  The first save results in
  ;; both a per-session and a per-save backup, to keep the numbering
  ;; of per-save backups consistent.
  (let ((buffer-backed-up nil))
    (backup-buffer)))

(add-hook 'before-save-hook  'force-backup-of-buffer)

আমি পরে আমি লিখেছি খুব এই বিষয়ে আগ্রহী হয়ে ওঠেন $<পরিবর্তে $@আমার মধ্যে Makefile, আমার আগের তিন ঘন্টা সমর্পণ পি

উপরেরটি আমি ভারী সম্পাদিত একটি ইমাস উইকি পৃষ্ঠার উপর ভিত্তি করে তৈরি করেছি


আমি আমার init.el ফাইলের মধ্যে উপরের কোডটি পেস্ট করেছি, তবুও আমি কোনও ব্যাকআপ ডিরেক্টরি পাই না এবং ইমাকগুলি এখনও পুরোপুরি ব্যাকআপ ফাইলগুলি তৈরি করে। আমি কিছু ভুল বুঝেছি, আমি
ইমাসে

@ সোহোলম: আপনি কি আমার উত্তরের সমস্ত কোডটি আমার উত্তরের setqশীর্ষে এস সহ পেস্ট করেছিলেন ? উপরেরগুলি ইম্যাক্স 24.5.1 এ আমার জন্য কাজ করে।
এনটিসি 2

এটি এখন কাজ শুরু। আমি সমস্ত কোড পেস্ট করে রেখেছিলাম, সুতরাং আমার নতুন কনফিগারেশনটি গ্রহণ করতে এটি কেন ধীর হয়েছিল তা আমি নিশ্চিত নই। তবে অনেক ধন্যবাদ!
সোহহলম

1
অনুসরণ হিসাবে, আমি জানি কেন এটি এখন কাজ করে না। এটি একটি মেশিনে কাজ করেছে, তবে অন্যটিতে নয়। এটি আমার হোম ডিরেক্টরিতে একটি খালি .emacs ফাইল ছিল কারণ এটি আমার .emacs.d ডিরেক্টরিকে প্রাধান্য দিয়েছিল।
নির্বোধ

31

ব্যাকআপ বিকল্পগুলি কনফিগার করার আরেকটি উপায় হ'ল কাস্টমাইজ ইন্টারফেস। প্রবেশ করান:

M-x customize-group

এবং তারপরে Customize group:প্রম্পটে প্রবেশ করুন backup

আপনি যদি বাফারের নীচে স্ক্রোল করেন তবে আপনি ব্যাকআপ ডিরেক্টরি আলিস্ট দেখতে পাবেন । মান দেখান ক্লিক করুন এবং নীচে তালিকার প্রথম এন্ট্রি সেট করুন:

Regexp matching filename: .*
Backup directory name: /path/to/your/backup/dir

অন্যথা, আপনি আমার সেটিং বন্ধ ব্যাকআপ চালু করতে পারেন ব্যাকআপ ফাইল তৈরি করুন থেকে off

আপনি যদি ইমাসকে নিজের .emacsফাইলটি স্বয়ংক্রিয়ভাবে সম্পাদনা করতে না চান তবে আপনি একটি কাস্টমাইজেশন ফাইল সেট আপ করতে চাইবেন ।


4
আমি আশা করি আমি প্রায় customize-group2 বছর আগে জানতাম । ধন্যবাদ!
wprl

30

আপনি এগুলি পুরোপুরি অক্ষম করতে পারেন

(setq make-backup-files nil)

আমি শেল প্রম্পট থেকে এটি সেট করতে চাই, যখন আমি হোস্ট থেকে হোস্টে প্রত্যাশায় থাকি তখন আমি .emacs ফাইলগুলি পছন্দ করি না: emacs --eval "(সেট-মেক-ব্যাকআপ-ফাইলগুলি নিল)"
ডেভ মোর্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.