দুর্ঘটনাক্রমে পাইপের পরিবর্তে আউটপুট পুনঃনির্দেশ> ব্যবহৃত হয়েছে |


21

এক মাস আগে আমি স্টিডিনের ম্যাক এবং আইপি অ্যাড্রেসগুলি ম্যাপ করতে পাইথন স্ক্রিপ্ট লিখেছিলাম। এবং দু'দিন আগে আমি এটি মনে রেখেছিলাম এবং আউটপুট ফিল্টার tcpdumpকরতাম তবে টাইপোর কারণে এটি ভুল হয়ে যায়। আমি টাইপ করেছি

tcpdump -ne > ./mac_ip.py

এবং আউটপুট কিছুই হয় না। তবে আউটপুটটি "অজানা" হওয়া উচিত যদি এটি ইনপুটটিকে বিশ্লেষণ করতে না পারে, তাই আমি প্রোগ্রামটির পরিবর্তে cat ./mac_ip.pyসমস্ত tcpdumpডেটা করেছি এবং খুঁজে পেয়েছি । তখন আমি বুঝতে পারি যে আমার ব্যবহার করা উচিত

tcpdump -ne | ./mac_ip.py

আমার প্রোগ্রাম ফিরে পেতে কোন উপায় আছে? যাইহোক আমি আবার আমার প্রোগ্রামটি লিখতে পারি, তবে আরও গুরুত্বপূর্ণ প্রোগ্রামের সাথে যদি এটি আবার ঘটে তবে আমার কিছু করা উচিত। অথবা ফাইলের জন্য পরীক্ষা করে আউটপুট পুনঃনির্দেশকে বলার কোনও উপায় আছে এবং এটি যদি একটি এক্সিকিউটেবল হয় তবে সতর্ক করতে হবে?


18
ওভাররাইটের আগে আপনি শেষ ব্যাকআপ থেকে আপনার প্রোগ্রামটি ফিরে পেতে পারেন, অন্যথায় নয়। শেল বিটিডব্লিউ আপনি নির্দিষ্ট করতে পারবেন set -o noglobberএবং ব্যাশ আর বিদ্যমান ফাইলগুলিতে পুনর্নির্দেশ করবে না। বিস্তারিত জানার জন্য এখানে দেখুন: cyberciti.biz/tips/howto-keep-file-safe-from-overwriting.html
eckes

12
গুরুত্বপূর্ণ এক্সিকিউটেবলের কাছে আপনার লেখার অনুমতি থাকা উচিত নয় ...
হ্যাগেন ভন ইটজেন

20
@ সেকসset -o noclobber
জিএনপি

38
@ হ্যাগেনভোন এটজেন আমি এ জাতীয় পরামর্শকে ঘৃণা করি, যেন আপনি এটি চালানোর আগে লিখেছেন প্রতিটি এককটি শেল এবং অজগর স্ক্রিপ্টের যথাযথ মালিকানা এবং অনুমতিগুলি সেট করেছেন (এবং অবশ্যই এটি সম্পাদনা করতে হবে যদি আবার সংক্ষেপে ফিরে আসি) )। এটি "প্রান্তিক বলতে চাইলে >আপনার টাইপ করা উচিত নয়" এর চেয়ে সামান্যতম অর্থবহ |। বাস্তবতা ভুলবেন না।
জেসন সি

30
গিট রেপস সস্তা। আপনার সমস্ত কোড প্রতিশ্রুতিবদ্ধ করুন না কেনই তা ছোট এবং অর্থহীন এবং তারপরে এই জাতীয় ভুলটি দ্রুত এবং সহজ সমাধান।
কেসির

উত্তর:


22

দুঃখের সাথে আমার সন্দেহ হয় আপনার এটি আবার লিখতে হবে। (আপনার যদি ব্যাকআপ থাকে, তবে এগুলি তাদের থেকে বেরিয়ে আসার সময়। যদি তা না হয় তবে আমি দৃ strongly়ভাবে আপনাকে ভবিষ্যতের জন্য একটি ব্যাকআপ র‌্যাব সেটআপ করার পরামর্শ দিচ্ছি L প্রচুর বিকল্প উপলব্ধ this

আমি দেখতে পেলাম যে এক্সিকিউটেবলকে একটি পৃথক ডিরেক্টরিতে স্থাপন করা এবং সেই ডিরেক্টরিটি ডিরেক্টরিতে যুক্ত PATHকরা সহায়ক। এইভাবে আমার সুস্পষ্ট পাথ দ্বারা নির্বাহযোগ্যদের উল্লেখ করার দরকার নেই। ব্যক্তিগত (ব্যক্তিগত) স্ক্রিপ্টগুলির জন্য আমার পছন্দসই প্রোগ্রামগুলির ডিরেক্টরিটি "$HOME"/binএটির সাথে প্রোগ্রাম অনুসন্ধানের পথে যুক্ত করা যেতে পারে PATH="$HOME/bin:$PATH"। সাধারণত এটি শেল স্টার্টআপ স্ক্রিপ্ট .bash_profileএবং / অথবা এ যুক্ত করা হবে .bashrc

সবশেষে, কার্যকর করা সমস্ত প্রোগ্রামে নিজের লেখার অনুমতি অপসারণ থেকে বিরত থাকার কিছু নেই:

touch some_executable.py
chmod a+x,a-w some_executable.py    # chmod 555, if you prefer

ls -l some_executable.py
-r-xr-xr-x+ 1 roaima roaima 0 Jun 25 18:33 some_executable.py

echo "The hunting of the Snark" > ./some_executable.py
-bash: ./some_executable.py: Permission denied

2
/usr/local/binব্যবহারকারীর দ্বারা নির্মিত এক্সিকিউটেবল এবং স্ক্রিপ্টগুলির জন্য আদর্শ অবস্থান
বাগেরহেড

4
@gardenhead এটি সিস্টেম কীভাবে সেট আপ করা যায় তার উপর নির্ভর করে। /usr/localহোস্ট-নির্দিষ্ট জিনিসগুলির উদ্দেশ্যে (কোনও নেটওয়ার্ক মাউন্টের মাধ্যমে হোস্ট জুড়ে ভাগ করা কোনও ডিরেক্টরিের বিপরীতে), এবং এটি মূল-অ-ব্যবহারকারীর দ্বারা লেখার যোগ্য হতে পারে।
চিপনার

4
@ গ্রেডেনহেড এটি অবশ্যই একটি আদর্শ অবস্থান। আমি /use/local/binস্থানীয়ভাবে ইনস্টল হওয়া স্ক্রিপ্ট এবং প্রোগ্রামগুলির জন্য ব্যবহার করি যা একাধিক ব্যবহারকারীর অ্যাকাউন্ট দ্বারা ব্যবহৃত হতে $HOME/binপারে এবং কোনও একক ব্যবহারকারীর ব্যক্তিগত জিনিসগুলির জন্য। উভয়ের মধ্যে মূল্য আছে।
রোয়াইমা

1
নোট করুন যে ফেডোরা মনে হচ্ছে ব্যবহার করার চেষ্টা করছে$HOME/.local/bin
জ্যান লিংস

1
@ জ্যান আইইউইউ! সিরিয়াসলি যদিও, আপনাকে ধন্যবাদ। দেখে মনে হচ্ছে যে আরএইচ সবকিছুতে ধাক্কা দেওয়ার চেষ্টা করছে ~/.localকারণ এটি "traditionalতিহ্যবাহী" জায়গা থেকে অন্য আইটেমটি সরানো হয়েছে।
রোয়াইমা

38

পুনর্নির্দেশের মাধ্যমে বিদ্যমান ফাইলগুলি ওভাররাইট হওয়া থেকে রোধ >করতে noclobberবিকল্প bashবা কোনও পসিক্স-শেলের মতো শেলটি ব্যবহার করুন ( (t)cshযেখানে বৈশিষ্ট্যটি বাস্তবে উত্পন্ন হয়েছিল সেখানেও আপনি সেখানে / set noclobberপরিবর্তে করেন) use তারপরে, আপনার যদি কোনও ফাইল প্রতিস্থাপন করার জন্য জোর করতে হয় তবে পুনঃনির্দেশ অপারেটরটি ( ইন ) ব্যবহার করুন ।set -o noclobberset -C>|>!(t)csh

উদাহরণ:

$ echo abc > file
$ set -o noclobber
$ echo xyz > file
bash: file: cannot overwrite existing file
$ echo xyz >| file
$ cat file
xyz

বিটিডাব্লু, আপনি এটির সাথে বর্তমান সেটিংস পরীক্ষা করতে পারেন set -o:

$ set -o
...
monitor         on
noclobber       on
noexec          off
...

যদিও এটি পুরোপুরি প্রশ্নের উত্তর দেয়, আমি এটির প্রস্তাব দেব না। 1. >|পরিবর্তে টাইপিং |টাইপিংয়ের তুলনায় খুব কম সম্ভাব্য নয় >। ২. ব্যাকআপগুলি করা সহজ এবং অত্যন্ত পরামর্শ দেওয়া হয় (এটির নামের একটি সম্পাদক সর্বশেষ সংস্করণটি সংরক্ষণ করতে পারেন; আছে cronইত্যাদি)। ৩. কোডের প্রতিটি টুকরোটি এমনকি ছোট স্ক্রিপ্টগুলিকে সংস্করণ নিয়ন্ত্রণের আওতায় রাখা উচিত। YMMV।
maaartinus

2
@ Maartinus আসুন, 1) একের পরিবর্তে দুটি পৃথক অক্ষর টাইপ করা স্পষ্টতই কম সম্ভাব্য। 2) স্পষ্টতই ব্যাকআপগুলি অপরিহার্য, কেউ ওপিকে ব্যাকআপ না নেওয়ার পরামর্শ দেয় না, এই উত্তরটি কোনওভাবেই ব্যাকআপ না রাখার পরামর্শ দেয় না এবং সম্পাদক ব্যাকআপগুলি ধরে নেয় যে আপনি কোনও সম্পাদককে ফাইল সম্পাদনা করেছেন। 3) আবার, আপনি কেবল ওপি লিখেছেন এমন কোডের কথা ভাবছেন, যেমন এই বিশেষ উদাহরণ হিসাবে, তবে প্রশ্ন এবং এই উত্তরটি সিস্টেম এক্সিকিউটেবলগুলি সহ মেশিনের যে কোনও ফাইলের ক্ষেত্রে প্রযোজ্য ।
টেরডন

8

@ ক্যাসির মন্তব্য অনুযায়ী, আমি দৃ strongly ়ভাবে একটি গিট রেপোর অধীনে গুরুত্বপূর্ণ স্ক্রিপ্টগুলি দূরবর্তীভাবে সিঙ্ক করার পরামর্শ দিচ্ছি (একটি অভিনব স্ব-হোস্টেড প্ল্যাটফর্মটি করবে), @ কেসির মন্তব্য বলেছে।

এইভাবে আপনি খারাপ মানবিক ভুল থেকে সুরক্ষিত যেমন ফাইলটিকে পূর্ববর্তী কার্যক্ষম অবস্থানে ফিরিয়ে নেওয়া এবং এটি আবার কার্যকর করা।


4

ফাইলটি কি পুনরুদ্ধারযোগ্য?

সংক্ষিপ্ত উত্তর: সাধারণত না।

@ মার্ক প্লটনিক মন্তব্যগুলিতে উল্লেখ করেছেন, আপনি আনকম্পাইল ব্যবহার করে .pyফাইলগুলি পুনরুদ্ধার করতে পারেন । এটি আপনার পরিস্থিতির জন্য উপযুক্ত হতে হবে।.pyc

সাধারণভাবে, যদিও এটি অনেক কঠিন। তাত্ত্বিকভাবে আপনি ফাইলগুলি মুছে ফেলার জন্য ফরেনসিক সরঞ্জামগুলি ব্যবহার করতে পারেন। সম্ভবত আমি সবচেয়ে সহজ testdiskব্যবহারটি হ'ল (ওরফে "ফটোরেক")। এটি কেবল কখনও কখনও কাজ করে এবং এটি একটি ধীর প্রক্রিয়া। এটি সাধারণত এটির পক্ষে উপযুক্ত নয়, সুতরাং, হ্যাঁ, এটি সম্ভব , তবে আসল উত্তরটি "না"।

পারি > ঊর্ধ্বলিপি এক্সেকিউটেবল না পরিবর্তন করা?

না। শেলটি কেবলমাত্র এক্সিকিউটেবল হিসাবে চিহ্নিত ফাইলগুলির জন্য পুনর্নির্দেশের জন্য শেলকে বলার কোনও আদর্শ উপায় নেই। এখানে "নোক্লোবার" রয়েছে যা বিদ্যমান ফাইলগুলিতে পুনর্নির্দেশকে কার্যকর করতে পারে বা না করতে পারে তবে নীচে সে সম্পর্কে আমার মন্তব্য দেখুন।

ভবিষ্যতে কী করব?

  1. এটি নির্বোধ শোনায় তবে ভবিষ্যতের ভুলগুলি রোধ করতে আপনার সম্ভবত কিছু করার দরকার নেই। আমার বাজি আপনি ইতিমধ্যে এই পাঠ শিখেছি হয়।

    আমি দীর্ঘদিন ধরে ইউনিক্সটি ব্যবহার এবং শেখাচ্ছি এবং লোকেরা প্রায়শই একবার এই ভুলটি করে, তারা খুব কমই এটি পুনরাবৃত্তি করে। কেন না? ছুরির অভিজ্ঞ ব্যক্তি একই কারণে সম্ভবত তাদের কাটবে না: মানুষ শেখায় ভাল at অবশেষে, সঠিক কাজটি করা দ্বিতীয় প্রকৃতিতে পরিণত হয়।

  2. এমন পাঠ্য সম্পাদক ব্যবহার করুন যা আপনার জন্য ব্যাকআপ তৈরি করে। উদাহরণস্বরূপ, আপনি যদি ব্যবহার করেন তবে emacsআপনার প্রোগ্রামের পূর্ববর্তী সংস্করণটি mac_ip.py ~ এ সংরক্ষণ করা হবে ~ অন্যান্য সম্পাদকদের একইভাবে কাজ করার জন্য কনফিগার করা যেতে পারে (যেমন, "ব্যাকআপ সেট করুন" .nanorc)। স্বয়ংক্রিয় ব্যাকআপগুলিকে সমর্থন করে না এমন সম্পাদকদের জন্য, আপনি আপনার .bashrc এ একটি সরল ফাংশন করতে পারেন:

    myeditor() { cp -p "$1" "$1~";  editor "$1"; }
    
  3. অনুলিপিগুলি তৈরি করা আপনার পক্ষে সহজ করুন। উদাহরণস্বরূপ, আপনি যে প্রকল্পে কাজ করছেন তার ডিরেক্টরিতে আপনার একটি মেকফিল থাকতে পারে এটির মতো লক্ষ্য সহ:

    # Use `make tar` to backup all files in this directory.
    # Tar filename will be ../<currentdirectory>-<date>.tar.gz 
    DIRNAME = $(shell basename `pwd`)
    TIMESTAMP = $(shell date +%s)
    tar:
        @echo "[Tarring up ${DIRNAME}.tar.gz]"
        (cd .. ; tar -zcvf "${DIRNAME}-${TIMESTAMP}.tar.gz" "${DIRNAME}")
    

    (দ্রষ্টব্য: স্ট্যাকেক্সচেঞ্জটি 4 টি স্পেস হিসাবে উপরের ট্যাবগুলিকে মিথ্যা প্রতিস্থাপন করছে))

  4. একইভাবে, আপনি একটি মেকফিল লক্ষ্য তৈরি rsyncকরতে পারেন যা আপনার যে sshঅ্যাক্সেস রয়েছে এমন একটি রিমোট ইউনিক্স হোস্টকে করে। (ব্যবহার করুন ssh-copy-idযাতে আপনাকে বারবার আপনার পাসওয়ার্ড জিজ্ঞাসা করা হবে না))

  5. ব্যবহার git। শুরু করার জন্য অনেক দুর্দান্ত টিউটোরিয়াল রয়েছে। চেষ্টা করুন man gittutorial, man gittutorial-2এবং man giteveryday। আপনার নিজস্ব গিট সংগ্রহস্থল স্থাপন শক্ত নয়, তবে আপনি গিথুব ডট কম এ বিনা মূল্যে একটি রিমোট রিপোজিটরিও তৈরি করতে পারেন

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

আমি "নোক্লোবার" ব্যবহার করে দৃ strongly়ভাবে নিরুৎসাহিত করি।

হ্যাঁ, আপনি যদি চয়ন করেন তবে আপনি এটি করতে পারবেন set -o noclobberযখনই আপনি বিদ্যমান ফাইলটি ওভাররাইট করার চেষ্টা করবেন ত্রুটি বার্তা পাবেন। এটি আমার মতে একটি খারাপ ধারণা। *

এটি শেলটি সক্ষম করে কিনা তা কোনও দৃশ্যমান ইঙ্গিত ছাড়াই একটি অ-মানক উপায়ে শেলটিকে কাজ করে। সাধারণ জিনিসগুলি করার জন্য আপনাকে আলাদা সিনট্যাক্স ব্যবহার করতে হবে। সবচেয়ে খারাপ, আপনি যদি নোক্লোবার ব্যবহার করতে অভ্যস্ত হন তবে কোনও দিন আপনি নোক্লোবার ছাড়াই অন্য একটি ইউনিক্স মেশিন ব্যবহার করবেন এবং এই ধরণের দুর্ঘটনা আবার ঘটতে পারে।

আপনি সম্ভবত জানেন যে, ইউনিক্স শেলটি বিশেষজ্ঞদের জন্য একটি ধারালো সরঞ্জাম হিসাবে নকশা করা হয়েছিল। এটি ব্যবহার করা দ্রুত এবং আপনার পথে পাবে না - এবং আপনি যদি শেষটি ক্ষুদ্র হয় ভুলে যান তবে এটি আপনাকে কেটে ফেলবে। তবে, আপনি যত বেশি এটি ব্যবহার করবেন, তত বেশি আমি মনে করি আপনি এটি প্রশংসা করবেন যে এটি ভাল জিনিস হতে পারে।


* পাদটীকা: সম্ভবত আমার মতামত লবণ একটি দানা সঙ্গে নিতে। আমি সাইকেলের প্রশিক্ষণের চাকাগুলি খারাপ ধারণা বলে মনে করি সেই ধরণের ব্যক্তিও।


আমি কিছুক্ষণ ইউনিক্সও শিখিয়েছি। আমার অনেক শিক্ষার্থী ইউনিক্সের প্রত্যক্ষ সরলতার প্রশংসা কখনও শিখেনি; আমি তাদের বলি যে তারা একা নন, এবং ইউনিক্স হ্যাটারের হ্যান্ডবুকটি নিয়ে কমিট করার সময় কমপক্ষে এখনও শিখতে পারবেন, যা তাদের জন্য খনি ক্ষেত্রের কিছু মানচিত্র তৈরি করে। simson.net/ref/ugh.pdf
জেসন

এছাড়াও: আমি সম্মত হই - সাইকেলের উপর প্রশিক্ষণের চাকা যে কেউ ট্রাইসাইকেল চালানো শিখতে পারে তার পক্ষে সহায়ক।
জেসন

2

আপনি যদি স্ক্রিপ্টটি সম্প্রতি দেখে বা সম্পাদনা করে থাকেন এবং এটি এখনও মেমোরি বাফারে থাকে তবে আপনি ডেটা এটির প্রথম ঘটানোর পরে পুনরুদ্ধার করতে পারেন। অন্যথায়, আপনি ভাগ্য থেকে অনেক দূরে।

যদি আপনি (বা পরিবর্তে ) পরিবর্তে (অথবা teeপাশাপাশি STDOUT) কোনও ফাইল লিখতে পাইপ করেন তবে আপনি সহজেই একটি উপনাম, ফাংশন, বা কোনও স্ক্রিপ্টে সিমলিংক দিয়ে প্রতিস্থাপন করতে পারেন যা ব্যবহারকারী যদি ফাইলটি লিখতে চলেছে তবে তারা সতর্ক করে to এক্সিকিউটেবল।>tee -a>>tee

নিম্নলিখিতটি কোনওভাবেই আদর্শ নয় এবং এটি প্রচুর উন্নতি হতে পারে তবে এটি কীভাবে সম্ভব এটির উদাহরণ হিসাবে এটি একটি সূচনা পয়েন্ট:

wee.sh:

#!/bin/bash

if [ -n "${2}" ]; then
  if [ "$(ls -l "${2}" | awk '{print $1}' | grep x)" ]; then
    echo executable
  else
    tee -a "${2}"
  fi
elif [ "$(ls -l "${1}" | awk '{print $1}' | grep x)" ]; then
  echo executable
else
  tee "${1}"
fi

... তবে ঠিক echo 'alias tee="/path/to/wee.sh"' >> ~/.bashrcবা অনুরূপ কিছু।

উজ্জ্বল দিকে, কমপক্ষে আপনি আরও অনুশীলন পাবেন এবং আপনার পাইথন স্ক্রিপ্টের দ্বিতীয় সংস্করণ সম্ভবত প্রথমটির চেয়ে অনেক ভাল হবে!


1

আপনি কোনও পিসি বা সার্ভারে কাজ করছেন কিনা তা আপনি নির্দিষ্ট করেননি। যদি আপনার ফাইলগুলি কোনও ডেডিকেটেড ফাইল সার্ভারে সঞ্চয় করা থাকে, তবে প্রায়শই স্বয়ংক্রিয়ভাবে ব্যাকআপ ("স্ন্যাপশট") ফাইল সার্ভার হার্ডওয়্যার (ওএস-এর) দ্বারা রাখা থাকে।

লিনাক্সের অধীনে

ভার্চুয়াল, লুকানো স্ন্যাপশট ডিরেক্টরিটি আপনার ফাইল সিস্টেমের প্রতিটি ডিরেক্টরিতে বিদ্যমান।

চেষ্টা করুন:

cd .snapshot   
ls -l

যদি ডিরেক্টরিটি বিদ্যমান থাকে, তবে আপনার ভাগ্য হতে পারে। আপনার এমন একটি ডিরেক্টরি হতে হবে যা নির্দিষ্ট সময়ে নির্দিষ্ট সময়ে স্বয়ংক্রিয়ভাবে সঞ্চিত ব্যাকআপগুলি ধারণ করে। নামগুলি অতীতে সম্পর্কিত যে সময়টিতে স্ন্যাপশট সংরক্ষণ করা হয়েছিল তা নির্দেশ করে। উদাহরণ স্বরূপ:

hourly.0
hourly.1
hourly.2
hourly.3
hourly.4
hourly.5
nightly.0
nightly.1
nightly.2
nightly.3
nightly.4
nightly.5
nightly.6
weekly.0
weekly.1
weekly.2

পর্যাপ্ত পুরানো যে কোনও টাইমপয়েন্ট ডিরেক্টরিতে যান (আপনার ফাইল-ওভাররাইট ভুলের আগে)। টাইমপয়েন্ট ডিরেক্টরিটির ভিতরে আপনার ../..অতীতের দিকের দিকনির্দেশক ডিরেক্টরি (এবং সমস্ত উপ-ডিরেক্টরি) দেখতে হবে।

cd nightly.6
ls  # look around   
tee < mac_ip.py  # check for the correct content
cp mac_ip.py ~/safekeeping/mac_ip.py  # save the old file

নোট:

  1. ls -a.snapshotডিরেক্টরি প্রদর্শন করবে না ; আপনার অবশ্যই নামটি স্পষ্টভাবে বলা উচিত। এটি ফাইল সার্ভার দ্বারা কার্যত isোকানো হয়। এটি আপনার ফাইল সিস্টেমে একটি সত্যিকারের ডিরেক্টরি হিসাবে উপস্থিত নেই।
  2. এই স্বয়ংক্রিয় স্ন্যাপশটগুলি একটি ঘূর্ণায়মান ইতিহাস। পুরানো পরিবর্তনগুলি শেষ অবধি পড়ে এবং হারিয়ে যায় lost আপনার এই ফাইলটি ফিরে দরকার বলে আপনি বুঝতে পেরে আপনাকে যত তাড়াতাড়ি সম্ভব এই কৌশলটি ব্যবহার করা উচিত।

উইন্ডোজ অধীনে

লুকানো স্ন্যাপশট ডিরেক্টরিটির নাম থাকতে পারে ~ স্ন্যাপশট এবং কেবলমাত্র একটি দেওয়া ড্রাইভের মূল স্তরে উপস্থিত exist

পরামর্শ

স্ন্যাপশটগুলি একটি সুরক্ষার জাল যা বেশিরভাগ সময় কার্যকর হয় তবে প্রতিবার নয়। gitএমনকি অন্যান্য তুচ্ছ ফাইলগুলির জন্য একটি সংস্করণ নিয়ন্ত্রণ ব্যবস্থা (যেমন ) ব্যবহার করার জন্য আমি অন্যান্য প্রস্তাবনার সাথে একমত হই ।


1

এটি আগেও বলা হয়েছে, এবং আমি এটি আবার বলব। একটি পুনর্বিবেচনা নিয়ন্ত্রণ ব্যবস্থা ব্যবহার করুন।

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

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

পুনর্বিবেচনা নিয়ন্ত্রণ পড়ুন, তারপরে পুনর্বিবেচনা সংশোধন নিয়ন্ত্রণ এবং তারপরে তাদের চেষ্টা করুন।


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