Scp সহ ফাইলগুলি কীভাবে _MOVE_ করবেন?


46

কীভাবে অনুলিপি না করে ফাইলগুলি একটি সার্ভার থেকে অন্য সার্ভারে (উভয় লিনাক্স) সরানো যায়?

man scpআমাকে দরকারী কিছু দেয় নি। আমি 'scp' এর পরে 'rm' ব্যবহার করতে পারি না কারণ আমার অবশ্যই নিশ্চিত করতে হবে যে ফাইলটি সফলভাবে স্থানান্তরিত হয়েছে। স্থানান্তরকালে কোনও ত্রুটি থাকলে ফাইলটি অবশ্যই মুছে ফেলা হবে না।

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

এসসিপি ছাড়াও কিছু থাকতে পারে?

উত্তর:


47

এসএসএস ওভার এসএসএস সম্ভবত --remove-source-filesবিকল্পটি আপনার সেরা বেট

rsync -avz --remove-source-files -e ssh /this/dir remoteuser@remotehost:/remote/dir 

একটি দ্রুত পরীক্ষা দেয়;

[tomh@workstation001 ~]$ mkdir test1
[tomh@workstation001 ~]$ mkdir test2
[tomh@workstation001 ~]$ touch test1/testfile.1
[tomh@workstation001 ~]$ ls test1/
testfile.1
[tomh@workstation001 ~]$ rsync --remove-source-files -av -e ssh test1/testfile.1 tomh@localhost:/home/tomh/test2/
sending incremental file list

sent 58 bytes  received 12 bytes  10.77 bytes/sec
total size is 0  speedup is 0.00

[tomh@workstation001 ~]$ ls test1/
[tomh@workstation001 ~]$
[tomh@workstation001 ~]$ ls test2/
testfile.1

@ স্পেনডাব্লু উল্লিখিত হিসাবে, -e sshএটি ডিফল্ট তাই বাদ দেওয়া যায়।


7
-e sshএখন বহু বছর ধরে অন্তর্ভুক্ত ডিফল্ট, সাধারণত এই প্যারামিটারটি আর ব্যবহার করার দরকার নেই।
সেভেন

@ সেনডাব্লু আহ জানুন! আমার আজকের দিনে আরএসসিএন-র খুব বেশি প্রয়োজন নেই কারণ স্কিপ বেশিরভাগ উদ্দেশ্যে পুনরাবৃত্ত মোডকে সমর্থন করে।
টম এইচ

এর পরে কোনও খালি ফোল্ডারগুলি পরিষ্কার করার জন্য এটি ব্যবহার করুন ( আরএসসিএনসিগুলি
bmaupin

1
smv() { rsync -az --remove-source-files "$@"; }সবেমাত্র আমার সরঞ্জামবক্সে যুক্ত হয়েছে। ধন্যবাদ.
রাইস ইউরিচ

আপনার আরএসসিএন না থাকলে কি হবে? উদাহরণস্বরূপ ওপেনআর্টিতে আরএসসিএন নেই এবং ফাইলগুলি সরানোর জন্য আমার স্কিপি ব্যবহার করা দরকার। এখন কি করতে হবে?
ভ্যালেন্ট

19

এর rsyncপরিবর্তে ব্যবহার করুন scp:

rsync -avz --remove-source-files /sourcedir user@host:/targetdir 

সাথে আরও তথ্য man rsync


17

এই প্রশ্নের ঠিক জরিমানা জবাব দেওয়া হয়েছে, এবং উত্তরটি গ্রহণ করা হয়েছে, তবে এটি যেহেতু এটি প্রথম পৃষ্ঠার শীর্ষে ভাসিয়েছে, তাই আমি ভেবেছিলাম যে কমপক্ষে মার্জিতভাবে যদি উত্তর দেওয়া যায় তবে আমি আরও সুনির্দিষ্টভাবে উত্তর দেওয়ার চেষ্টা করব। হ্যাঁ, আপনি রিটার্ন কোডটি ব্যবহার করতে পারেন scpএবং আমি প্রায়শই এটি করি do ইন bash:

scp foo user@server:/destination && rm foo

ব্যর্থতা সঠিকভাবে কপি করতে এবং পরিচালনা করতে আমি একাধিক ফাইল সম্পর্কে আপনার বক্তব্য রেখেছি, তাই একাধিক ফাইলের জন্য:

for file in bar*; do scp "$file" user@server:/destination && rm "$file" ; done

আপনি যদি ব্যবহার করেন তবে এটি সর্বশেষ ব্যবহারিক ssh-agentতবে আমি আপনাকে অনেক আশা করি।


1
আমার মনে হয় এর উত্তর হওয়া উচিত ছিল। এটি সঠিকভাবে জিজ্ঞাসিত প্রশ্নের উত্তর দেয়।
ট্র্যাভিস গ্রিগস 21

এসসিপি ব্যান্ডউইথ সীমাবদ্ধতা (এএফআইকে) হ্যান্ডেল না করায়, আমি আপনার হ্যান্সওয়ারকে একটি সংজ্ঞায়িত ব্যান্ডউইথটিতে একের পর এক ফাইল সরিয়ে নিতে আরএসসিএনসি দিয়ে ব্যবহার করেছি। ধন্যবাদ!
মুনচাইল্ড

@ মুনচাইল্ড, স্ক্রিপ প্রকৃতপক্ষে -lপতাকা ব্যবহার করে ব্যান্ডউইথ সীমা পরিচালনা করতে পারে । উদাহরণস্বরূপ, -l 81928192 কেবি / সেকেন্ডে স্থানান্তর সীমাবদ্ধ করতে
স্পেন্সার ডি

3

আমার পরিস্থিতিতে, ssh বন্দরটি 22 নয়, তাই

rsync -avz --remove-source-files -e "ssh -p $portNumber" user@remoteip:/path/to/files/ /local/path/

আমার জন্য কাজ কর.


5
প্রতিটি কমান্ডের জন্য নির্দিষ্ট করার চেয়ে আপনি নিজের ssh কনফিগারেশন ফাইলে (~ / .ssh / config) কাস্টম ssh পোর্ট নম্বর স্থাপন করা থেকে অনেক ভাল। এটি বিশ্বব্যাপী, প্রতি হোস্টে বা হোস্টনামের সাথে মিলে যাওয়া নিয়মিত অভিব্যক্তির জন্য নির্দিষ্ট করা যেতে পারে।
ছিঁচকে চোর

উত্স এবং গন্তব্য উভয় পৃথকভাবে পোর্ট কিভাবে সেট করবেন?
ব্র্যাথলজ

3

আমার মতো আপনার যদি পুরানো টার্গেট সার্ভার থাকে তবে আপনি ব্যবহার করতে পারবেন না

--remove-source-files

কিন্তু আপনি ব্যবহার করতে হবে

--remove-sent-files --protocol=29

পরিবর্তে.


3

যদি দুটি পদক্ষেপে এটি করা সমস্যা না scpহয় তবে আপনি রিমোট সার্ভার থেকে ফাইলটি অনুলিপি করতে এবং তারপরে ssh -e "rm /path/to/file"ডিস্ক থেকে অপসারণ করতে পারেন। বিশেষত মেশিনগুলির মধ্যে ফাইলগুলি সরানোর সময় জিনিসগুলি ভুল হতে পারে, তাই অনুলিপি এবং মুছে ফেলা আলাদাভাবে করা ভাল হবে, এবং কেবলমাত্র এটি সফলভাবে অনুলিপি করা হয়েছে তা নিশ্চিতভাবে জানা থাকলে ফাইলটি সরিয়ে ফেলুন।

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