restore version of file with minio-js
Asked Answered
D

1

1

Is there any way to restore a specific version of a file on a minio server with minio-js on a bucket with active versioning? On the web console there is a button to restore, but I didn't found any docs to do this with the minio-js client.

Dewhurst answered 28/7, 2023 at 10:31 Comment(7)
I can get Object(text) file with the version ID by Postman API call but I try to call it by minio-js for local minio server. I failed did you can access a local minio server by 'minio-js' or remote mino server?Plastid
This is documentation in herePlastid
Thanks. I know the documentation and can access the different versions, but do I have to load a version and reupload it to restore an older version? The js client has much less functionality then for example the java client.Dewhurst
I can do it via REST-API by Postman not minio-js with local minio server. If you want to see demo, I can post in here.Plastid
That would be great if you have a sample, thanks.Dewhurst
I will post after return home in tonight.Plastid
I posted it by curl command, let me know it is looking for even if not minio-jsPlastid
P
1

I did not succeed to restore call using by minio-js If someone success to call by minio-js let me know or post here.

But I can restore the REST API call by curl.

curl --cookie <cookie file name> \
--silent \
-X "PUT" 'http://localhost:9000/api/v1/buckets/version-demo/objects/restore?prefix=<prefix id>&version_id=<restore version id>'

<cookie file name>: save a cookie file a login command by curl

<prefix id>: will display the browser

<restore version id>: Can get version list command by curl

Demo

Launching local minio by docker compose, detail step in here

Access by Browser

http://localhost:9000/

enter image description here

Will create demo object and save a text-data.txt file with two versions. Will restore v1 text file after V1 and V2 store, total of three versions

V1 -> V2 -> V3 (restored V1, it means save V1)

Object(Bucket) Name

demo

You must to enable Versioning in UI

enter image description here

enter image description here

text file name

text-data.txt

enter image description here

Version 1's content

I am v1 file, I have single line.

Version 2's content

I am v2 file
I have two lines.

After upload two version file with sav file name. You can see the version ID from UI.

And Browser's address editor can get the prefix or path It needs to use the version restore and delete API call.

My demo's value is

dGV4dC1kYXRhLnR4dA==

enter image description here

Admin credential

user name: admin
password: admin-strong

I will use this to save the cookie file.

Save Cookie by curl

The cookies.txt will save and it includes access token

curl --location 'http://localhost:9000/api/v1/login' \
--silent \
--header 'Content-Type: application/json' \
--cookie-jar cookies.txt \
--data '{"accessKey":"admin","secretKey":"admin-strong"}'

enter image description here

Now ready to call Get version list and Restore API with that cookie.txt file.

Get the version list for the text-data.txt file of demo bucket

curl --cookie cookies.txt --silent --location 'http://localhost:9000/api/v1/buckets/demo/objects?with_versions=true' | json_pp

Result Image

enter image description here

Result JSON

{
   "objects" : [
      {
         "etag" : "2f2039d664ae526ff63e13bd24b3b487",
         "is_latest" : true,
         "last_modified" : "2023-08-03T03:54:26Z",
         "name" : "text-data.txt",
         "size" : 31,
         "version_id" : "49ad9f0b-95b4-4191-a850-5bf62aa6062b"
      },
      {
         "etag" : "8dd501a7d924867c24793acccc40b9ec",
         "last_modified" : "2023-08-03T03:53:58Z",
         "name" : "text-data.txt",
         "size" : 33,
         "version_id" : "d99bbbbf-5413-42f5-9a8d-265709018a2a"
      }
   ],
   "total" : 2
}

Restore the text-data.txt version 1 after V2 text.

So before API call status V1 -> V2 After API call V1 -> V2 -> V3 (restore with V1 content)

Version id set with Version 1's ID

curl --cookie cookies.txt --silent -X "PUT" 'http://localhost:9000/api/v1/buckets/demo/objects/restore?prefix=dGV4dC1kYXRhLnR4dA==&version_id=d99bbbbf-5413-42f5-9a8d-265709018a2a'

Before Restore enter image description here

After Restore

Terminal: restore and get list.

enter image description here

UI: confirm API call is correct or not.

enter image description here

This is version 3 content

enter image description here

Plastid answered 3/8, 2023 at 4:29 Comment(1)
Thank you very much for the detailed description.Dewhurst

© 2022 - 2024 — McMap. All rights reserved.